SQL Server 拆分字符串方法详解

来源:互联网 发布:淘宝点赞买家秀要钱吗 编辑:程序博客网 时间:2024/05/21 22:28
在数据库中我们有可能要对字符串分解,特别是在对数据库做批量操作的时候,我们用一个字符串来代替了对数uk的富多次连接。分解字符串在C#里面很简单,可是在SQL里面就稍微有点复杂,不过想明白了还是比较简单的。希望下面的内容能帮到到您!

 

代码示例和解释

– 需要截取的字符串
declare @value varchar(max)
–截取完成以后得到的值
declare @temp varchar(max)
–记录分隔符的位置
declare @index int
–要截取的字符串,注意指定分隔符, 这里是用的是 ‘,’来分割的,
— 注意,这里最后多了一个 ‘,’如果没有的话,最后面的一组数据是截取不了的。
set @value=’aa,bb,cc22,3333,4444,’
–随便设置一个默认值
set @index=1
–使用循环来截取
while(1=1)
begin
— 在指定字符串中查找指定字符串的位置(索引是从1开始数的)。
–数据库帮助文档说,如果没有找到就返回0
set @index=charindex(‘,’,@value)
–如果返回0就表示没有找完了,就可以推出循环了。
if(@index =0) break
– temp 就是找出来的值,left 也就是在指定的字符串中从左边取指定的个数,
— 注意因为index 上面找出来的位置已经包含了’,’ 的位置,所以要减 1
set @temp = left(@value,@index-1)
– 重新设置源字符串, right 和left 反正在,在指定的字符串中从右边向左边截取。
–index 是从左边数的第一个 ‘,’ 的位置,所以我们用字符串的总长度减去index
–就是新的字符串,下一次循环就在这个新的值上面操作。
set @value = RIGHT(@value,LEN(@value)-@index)
–显示结果
print ‘temp: ‘+@temp
end
go

 

结果:

temp: aa
temp: bb
temp: cc22
temp: 3333
temp: 4444

 

 


原创粉丝点击