SQL Server拆分字符串的方法
SQLServer拆分字符串的方法:
use tempdb
go
--测试数据
declare @s varchar(1000)
set @s='ak47,mp5,1,23'
/*要求输出结果
S
----
ak47
mp5
1
23
*/
--三种方法对比:
--1.[朴实]动态Exec方法:
declare @s1 varchar(1000)
set @s1=right(replace(','+@s,',',''' as S union select '''),len(replace(','+@s,',',''' 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)
)
关键字:SQL Server、拆分、字符串
新文章:
- CentOS7下图形配置网络的方法
- CentOS 7如何添加删除用户
- 如何解决centos7双系统后丢失windows启动项
- CentOS单网卡如何批量添加不同IP段
- CentOS下iconv命令的介绍
- Centos7 SSH密钥登陆及密码密钥双重验证详解
- CentOS 7.1添加删除用户的方法
- CentOS查找/扫描局域网打印机IP讲解
- CentOS7使用hostapd实现无AP模式的详解
- su命令不能切换root的解决方法
- 解决VMware下CentOS7网络重启出错
- 解决Centos7双系统后丢失windows启动项
- CentOS下如何避免文件覆盖
- CentOS7和CentOS6系统有什么不同呢
- Centos 6.6默认iptable规则详解