论坛首页 综合技术论坛

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

浏览 2536 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-09-07  
发这贴主要是混点分,因为不满30分不能在海版回复……
下面说的这个简单点举例说明吧,例如我们发表一篇文章,通常会再缀上几个标签。这时候通常的做法就是先连接数据库,往文章表插一条数据,然后循环再把标签插入文章标签表。
我打算全用存储过程来实现,传入的参数类似:文章标题、内容、作者、标签(用'|'分隔、等其他字段)
有个比较棘手的问题,就是将标签这个长字符串分隔成若干标签,循环插入数据表。
个人的解决方法如下:
---将传进来的字符串按照自定义分隔符分隔成若干独立的字符串
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
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics