浏览 2535 次
锁定老帖子 主题:sqlserver存储过程中分隔长字符串
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-09-07
下面说的这个简单点举例说明吧,例如我们发表一篇文章,通常会再缀上几个标签。这时候通常的做法就是先连接数据库,往文章表插一条数据,然后循环再把标签插入文章标签表。 我打算全用存储过程来实现,传入的参数类似:文章标题、内容、作者、标签(用'|'分隔、等其他字段) 有个比较棘手的问题,就是将标签这个长字符串分隔成若干标签,循环插入数据表。 个人的解决方法如下: ---将传进来的字符串按照自定义分隔符分隔成若干独立的字符串 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 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |