贴子:http://www.tiantiansoft.com/bbs/dispbbs.asp?boardID=10&ID=149707
测试数据表D_Area,有字段:did、dna
如果是使用游标,需要这样:
declare @dna varchar(20), @temp varchar(20)
select @dna=''
declare dna_cur cursor for select dna from D_Area
open dna_cur
fetch next from dna_cur into @temp
while @@fetch_status=0
begin
if @temp is not null
begin
select @dna=@dna + ',' + isnull(@temp,'')
end
fetch next from dna_cur into @temp
end
close dna_cur
deallocate dna_cur
select @dna=substring(@dna,2,len(@dna)-1)
print @dna
不需要cursor,定义一个外部变量,然后select自动会累加
方法:
declare @dna varchar(20)
select @dna=''
select @dna=@dna + isnull(dna,'') + ',' from D_Area --where dna is not null
if @dna is null
begin
print 'null'
end
else
begin
print @dna
end
红色那里条件注释掉了,如果是要每个记录都加上,null值用''替换,就不要用条件了,如果是只要有值的记录,那就使用条件,前面去掉isnull函数
以前这样的东西,一直都是用游标做的,都不知道原来sql可以这样用法