SQL Server拆分字符串的3常用种方法

以下的文章主要是介绍的是SQL Server拆分字符串的3常用种方法,我前两天在相关网站看见SQL Server拆分字符串的3常用种方法的资料,觉得挺好,就拿出来供大家分享,望会给大家带来一些帮助在此方面。

 
 
  1. use tempdb  
  2. use tempdb  
  3. go  

测试数据

 
 
  1. declare @s varchar(1000)  
  2. set @s='ak47,mp5,1,23' 

要求输出结果

 
 
  1. S  
  2. ak47  
  3. mp5  
  4. 1  
  5. 23  
  6.  

SQL Server拆分字符串的3种方法对比:

SQL Server拆分字符串1.[朴实]动态Exec方法:

 
 
  1. declare @s1 varchar(1000)  
  2. set @s1=right(replace(','+@s,',',''' as S union select '''),len(replace(','+@s,',',''' as S union select '''))-12)+''''  
  3. exec(@s1)  
  4.  

SQL Server拆分字符串2.[变通]表交叉方法:

 
 
  1. select replace(reverse((left(s,charindex(',',s)))),',','') as S from(  
  2. select r,reverse(left(@s,r))+',' as s  
  3. from(  
  4. select (select count(*) from sysobjects where name<=t.name ) as r  
  5. from sysobjects t  
  6. )a where r<=len(@s)  
  7. and left(@s+',',r+1) like '%,'  
  8. )t order by r  

SQL Server拆分字符串3.[高级]XML方法:

  1. DECLARE @idoc int;  
  2. DECLARE @doc xml;  
  3. set @doc=cast('<Root><item><S>'+replace(@s,',','</S></item><item><S>')+'</S></item></Root>' as xml)  
  4. EXEC sp_xml_preparedocument @Idoc OUTPUT, @doc  
  5. SELECT * FROM OPENXML (@Idoc, '/Root/item',2)  
  6. WITH (  
  7. [S] varchar(10)  
  8. )  
  9.  
// sql server 分解xml测试
DECLARE @idoc int;  DECLARE @doc xml;  
declare @s varchar(1000)  
set @s='ak47,mp5,1,23' 
set @doc=cast('<NewDataSet>
  <Table>
    <DepartmentName>部门名称</DepartmentName>
<CourseCode>科目编码</CourseCode>
<CourseName>科目名称</CourseName>
  </Table>
  
</NewDataSet>' as xml)  
EXEC sp_xml_preparedocument @Idoc OUTPUT, @doc  
SELECT * FROM OPENXML (@Idoc, '/NewDataSet/Table',2)  
WITH (  
[DepartmentName] varchar(100),
CourseCode varchar(100),
CourseName varchar(100)
  )
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值