to: lang_ren(浪人) 多条语句是肯定可以解决,问题是我这条查询是嵌在一个特复杂的SQL语句里,又不是在存储过程中实现,是写在VB与数据库的连接代码中的. 表数据: 序号 名称 1 CAR 2 PHONE 3 BOOK : : : : 如果能用一条SQL语句改写成以下,应该也能解决: 1 2 3 ... 名称 CAR PHONE BOOK ...
请问 playyuer(小干部儿),UDF是什么意思?
declare @字符 varchar(8000) set @字符='' select @字符=名称+',' from 表 select @字符
create function getstr() returns varchar(8000) as begin declare @str varchar(8000) set @str='' select @str=@str+','+rtrim(名称) from 表 set @str=right(@str,len(@str)-1) return @str end go-----调用: select dbo.getstr() 结果
多条语句是肯定可以解决,问题是我这条查询是嵌在一个特复杂的SQL语句里,又不是在存储过程中实现,是写在VB与数据库的连接代码中的.
表数据:
序号 名称
1 CAR
2 PHONE
3 BOOK
: :
: :
如果能用一条SQL语句改写成以下,应该也能解决:
1 2 3 ...
名称 CAR PHONE BOOK ...
set @字符=''
select @字符=名称+',' from 表
select @字符
returns varchar(8000)
as
begin
declare @str varchar(8000)
set @str=''
select @str=@str+','+rtrim(名称) from 表
set @str=right(@str,len(@str)-1)
return @str
end
go-----调用:
select dbo.getstr() 结果
能不能不用调用别的函数,因为我的SQL语句是在与数据库的连接中用的,而不是在存储过程中写.如果能用一条(就算很复杂)的语句写出来就最好了.
以delphi为例:
query1.add('set nocount on;declare @ varchar(8000);set @='''';select @=@+'','' from 表;select left(@,len(@)-1) 结果');
query1.open();
select dbo.getstr()
解决了我的问题.getstr() 作为一个自定义函数.通过调用就OK了.当然,我在函数里提供了其它参数,并对getstr()作了微小的修改.既在set @str=right(@str,len(@str)-1)前面加上了:if @str<>''