求一个sql

anqini 2008-09-19 12:24:20
在存储过程里要实现一下的功能

有个字符串:'a,b,c,d,e,f'不是定长的,可能有更多的元素

现在已逗号来分割这个字符串,就像Split方法一样的效果~

谢谢le
...全文
104 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
hyqwan11112 2008-09-19
  • 打赏
  • 举报
回复

--也可以不放到表里,如下:“left(@sql,charindex(',',@sql)-1)”即是分割出来的每一部分,随便你怎么使用,我是分别--把它打印出来了
declare @sql varchar(8000)
set @sql='a,b,c,d'
while(charindex(',',@sql)>0)
begin
print left(@sql,charindex(',',@sql)-1)
set @sql = stuff(@sql,1,charindex(',',@sql),'')
end
anqini 2008-09-19
  • 打赏
  • 举报
回复
set @sql='select '''+replace(@sql,',','''name union all select ''')+''''
这里的 select '''是什么意思啊?为什么是3个单引号?
CN_SQL 2008-09-19
  • 打赏
  • 举报
回复

declare @sql varchar(8000)
declare @t table(col char(1))
set @sql='a,b,c,d'
set @sql='select '''+replace(@sql,',','''name union all select ''')+''''
insert @t exec(@sql)
select * from @t




anqini 2008-09-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 pt1314917 的回复:]
SQL code

declare @sql varchar(8000)
set @sql='a,b,c,d'
set @sql='select '''+replace(@sql,',','''name union all select ''')+''''
exec(@sql)




[/Quote]
结果返回之后我怎么使用这些分割后的元素呢?
wxg22526451 2008-09-19
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20080612/22/c850499f-bce3-4877-82d5-af2357857872.html
pt1314917 2008-09-19
  • 打赏
  • 举报
回复

declare @sql varchar(8000)
set @sql='a,b,c,d'
set @sql='select '''+replace(@sql,',','''name union all select ''')+''''
exec(@sql)


pt1314917 2008-09-19
  • 打赏
  • 举报
回复
返回一个表集合吗?类似
a
b
c
d
anqini 2008-09-19
  • 打赏
  • 举报
回复
自己明白了。。。

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧