加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQLServer拆分字符串的三种方法

发布时间:2020-12-12 15:46:18 所属栏目:MsSql教程 来源:网络整理
导读:use tempdb go -- 测试数据 declare @s varchar ( 1000 ) set @s = 'ak47,mp5,1,23' ? /* 要求输出结果 S ---- ak47 mp5 1 23 */ ? --3 种方法对比 : ? --1.[ 朴实 ] 动态 Exec 方法 : declare @s1 varchar ( 1000 ) set @s1 =right( replace ( ',' + @s , '

use tempdb

go

--测试数据

declare @s varchar(1000)

set @s='ak47,mp5,1,23'

?

/*要求输出结果

S

----

ak47

mp5

1

23

*/

?

--3种方法对比:

?

--1.[朴实]动态Exec方法:

declare @s1 varchar(1000)

set @s1=right(replace(','+@s,',',''' as S union select '''),len(replace(',''' as S union select '''))-12)+''''

exec(@s1)

--2.[变通]表交叉方法:

select replace(reverse((left(s,charindex(',s)))),'') as S from(

select? r,reverse(left(@s,r))+',' as s

?from(

select?? (select count(*) from sysobjects where name<=t.name ) as r

from sysobjects t?

? )a where r<=len(@s)

and left(@s+',r+1) like '%,'

)t order by r

--3.[高级]XML方法:

DECLARE @idoc int;

DECLARE @doc xml;

set @doc=cast('<Root><item><S>'+replace(@s,'</S></item><item><S>')+'</S></item></Root>' as xml)

EXEC sp_xml_preparedocument @Idoc OUTPUT, @doc

SELECT *?? FROM OPENXML (@Idoc, '/Root/item',2)

?? WITH (

??????????? [S] varchar(10)

???????? )

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读