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

如果我想把一个字符串“0,231,1,54,2”转成数组,输出结果为02311542求代码求注解... 如果我想把一个字符串“0,231,1,54,2”转成数组,输出结果为
0
231
1
54
2
求代码求注解
展开
 我来答
szm341
推荐于2016-11-08 · TA获得超过6726个赞
知道大有可为答主
回答量:5005
采纳率:100%
帮助的人:5165万
展开全部
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中
然后将字符串去掉索取分隔符位置之前的部分,
然后继续取得第二个分隔符的索引位置,直至循环结束
当循环结束,也就是字符串中已不存在分隔符,那么就剩下最后一段需要分隔的字符了
那么直接插入临时表中,最后返回这个临时表即可
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
蚂蚁棚
2013-03-13 · TA获得超过138个赞
知道答主
回答量:200
采纳率:0%
帮助的人:130万
展开全部
Tsql里边没有数组,你转来怎么存?用数组不如拿出串后,在程序里转,多方便啊
追问
什么意思...
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式