求SQL语句

obuntu 2010-03-17 12:01:57



declare @str varchar(20)

set @str='aa;bbdfa;fadfa;'

select CHARINDEX(';',@str)

select SUBSTRING(@str,0,CHARINDEX(';',@str))




现在想把@str里的值以分号为间隔,依次读出来,要咋整?
...全文
77 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
--小F-- 2010-03-17
  • 打赏
  • 举报
回复
不写了 ..
SQL77 2010-03-17
  • 打赏
  • 举报
回复
declare @str varchar(20),@SQL varchar(100)

set @str='aa;bbdfa;fadfa;'

SELECT @SQL='SELECT COL='''+REPLACE(@STR,';',''' UNION ALL SELECT ''')+''''

EXEC( @SQL)

COL
-----
aa
bbdfa
fadfa
Leshami 2010-03-17
  • 打赏
  • 举报
回复

declare @str varchar(20)
SET @str='aa;bbdfa;fadfa;'

SET @str = LEFT(@str,LEN(@str)-1)

DECLARE @tb TABLE(Col VARCHAR(20))

WHILE CHARINDEX(';',@str)>0

BEGIN
INSERT @tb SELECT LEFT(@str,CHARINDEX(';',@str)-1)
set @str=STUFF(@str,1,CHARINDEX(';',@str),'')

END
INSERT INTO @tb SELECT @str
SELECT * FROM @tb

Col
--------------------
aa
bbdfa
fadfa

tim_spac 2010-03-17
  • 打赏
  • 举报
回复
set nocount on
declare @str varchar(20)
set @str='aa;bbdfa;fadfa;'

declare @splited table (s varchar(20))
declare @pos int, @got varchar(20)
set @pos = charindex(';',@str)
while @pos>0 begin
select @got = left(@str,@pos-1), @str = right(@str, len(@str)-@pos)
insert into @splited values (@got)
set @pos = charindex(';',@str)
end
if @str>''
insert into @splited values (@str)


select * from @splited
-- aa
-- bbdfa
-- fadfa

lidanzi 2010-03-17
  • 打赏
  • 举报
回复
declare @str varchar(20)

set @str='aa;bbdfa;fadfa;'

select parsename(left(replace(@str,';','.'),len(replace(@str,';','.'))-1),3),
parsename(left(replace(@str,';','.'),len(replace(@str,';','.'))-1),2),
parsename(left(replace(@str,';','.'),len(replace(@str,';','.'))-1),1)

34,591

社区成员

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

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