首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

请教

2012-01-21 
请问declare@strvarchar(8000)set@strasd,asdf,asddff,asda,abc,cba,nba,cbawhilecharindex( , ,@str)!0

请问
declare   @str   varchar(8000)
set   @str   =   'asd,asdf,asddff,asda,abc,cba,nba,cba '
while   charindex( ', ',@str)!=0
begin
select   left(@str,   charindex( ', ',@str)-1)
set   @str=right(@str,len(@str)-charindex( ', ',@str))
end
这样取不到最后一个cba
只能把前面的所有取出来
请问怎么才能取出所有?

[解决办法]
declare @str varchar(8000)
set @str = 'asd,asdf, '
while charindex( ', ',@str)!=0
begin
select left(@str, charindex( ', ',@str)-1)
set @str=right(@str,len(@str)-charindex( ', ',@str))
end



[解决办法]
1.
declare @str varchar(8000)
set @str = 'asd,asdf,asddff,asda,abc,cba,nba,cba '
while charindex( ', ',@str)> 0
begin
select left(@str, charindex( ', ',@str)-1)
set @str=right(@str,len(@str)-charindex( ', ',@str))
end
select @str

2.
declare @str varchar(8000)
set @str = 'asd,asdf,asddff,asda,abc,cba,nba,cba '
set @str=@str+ ', '
while charindex( ', ',@str)> 0
begin
select left(@str, charindex( ', ',@str)-1)
set @str=right(@str,len(@str)-charindex( ', ',@str))
end

[解决办法]
最后加个select @str

declare @str varchar(8000)
set @str = 'asd,asdf,asddff,asda,abc,cba,nba,cba '

while charindex( ', ',@str)!=0
begin
print left(@str, charindex( ', ',@str)-1)
set @str=right(@str,len(@str)-charindex( ', ',@str))
end
print @str

/*
我用的是print

asd
asdf
asddff
asda
abc
cba
nba
cba
*/
[解决办法]
3.如果是簡單的處理
declare @str varchar(8000)
set @str = 'asd,asdf,asddff,asda,abc,cba,nba,cba '
declare @sql varchar(8000)
set @sql= 'select ' ' '+replace(@str, ', ', ' ' ' union all select ' ' ')+ ' ' ' '
exec( @sql )

/*
------
asd
asdf
asddff
asda
abc
cba
nba
cba
*/

热点排行