sqlserver存储过程中分隔长字符串

发这贴主要是混点分,因为不满30分不能在海版回复…… :lol:
下面说的这个简单点举例说明吧,例如我们发表一篇文章,通常会再缀上几个标签。这时候通常的做法就是先连接数据库,往文章表插一条数据,然后循环再把标签插入文章标签表。
我打算全用存储过程来实现,传入的参数类似:文章标题、内容、作者、标签(用'|'分隔、等其他字段)
有个比较棘手的问题,就是将标签这个长字符串分隔成若干标签,循环插入数据表。
个人的解决方法如下:
---将传进来的字符串按照自定义分隔符分隔成若干独立的字符串
declare
@str nvarchar(200),--传入的字符串
@i int, --取charindex时,定义
@index_len int

select @str='我们|他们|你们|咱们大家伙|'
select @i=1
while 1=1
begin
select @index_len=charindex('|',@str,@i)----此处可将‘|’定义成变量
if(@index_len=0)
break;
else
begin
select substring(@str,@i,@index_len-@i) ----得到每个标签了,想干嘛就干嘛
select @i=@index_len+1 ---确保每次再进行charindex时,标识位后移
end
end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值