关于SQLserver 存储过程 如何切割一个字符串 转化为数组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于SQLserver 存储过程 如何切割一个字符串 转化为数组相关的知识,希望对你有一定的参考价值。

如果我想把一个字符串“0,231,1,54,2”转成数组,输出结果为
0
231
1
54
2
求代码求注解

参考技术A Create Function [dbo].[Split](@Sql varchar(8000),@Splits varchar(10))
returns @temp Table (a varchar(100))
As
Begin
Declare @i Int
Set @Sql = RTrim(LTrim(@Sql))
Set @i = CharIndex(@Splits,@Sql)
While @i >= 1
Begin
Insert @temp Values(Left(@Sql,@i-1))
Set @Sql = SubString(@Sql,@i+1,Len(@Sql)-@i)
Set @i = CharIndex(@Splits,@Sql)
End
If @Sql <> ''
Insert @temp Values (@Sql)
Return
End追问

能不能一行一行的解释下。。

追答

@sql为整个要分隔的字符串,@splits为用来分隔字符串的字符,如你例子中的逗号

去掉字符串变量左右空白
获取第一个分隔字符所在字符中的索引位置@i
while循环,一直到@i=0结束,因为索引为0的话说明字符串中已不存在分隔符
循环体内,将分隔符之前的字符串插入临时表@temp中
然后将字符串去掉索取分隔符位置之前的部分,
然后继续取得第二个分隔符的索引位置,直至循环结束
当循环结束,也就是字符串中已不存在分隔符,那么就剩下最后一段需要分隔的字符了
那么直接插入临时表中,最后返回这个临时表即可

本回答被提问者和网友采纳
参考技术B Tsql里边没有数组,你转来怎么存?用数组不如拿出串后,在程序里转,多方便啊追问

什么意思...

sqlserver 如何修改存储过程脚本

参考技术A 使用alter proc 就可以修改脚本了
或者在SQL Server Management Studio 中右键你要修改的存储过程,在菜单中点击修改存储过程。本回答被提问者和网友采纳

以上是关于关于SQLserver 存储过程 如何切割一个字符串 转化为数组的主要内容,如果未能解决你的问题,请参考以下文章

关于sqlserver存储过程的问题

关于sqlserver 的一个查询, 解决再加50分

关于SQLSERVER存储过程的问题,求解

关于jdbc调用存储过程的问题

关于sqlserver存储过程事务锁的问题

如何给SQLSERVER存储过程传递数组参数