create function getstr(@content char(20))
returns varchar(2000)
as 
begin
declare @str varchar(2000)
set @str=''
select @str=@str+','+rtrim(Number) from tb_ContMX where conID=@content
set @str=right(@str,len(@str)-1) where @str<>''
return @str
end
go语句:
select conID,dbo.getstr(conID) Number from tb_Cont

解决方案 »

  1.   

    create function GetContMXNumber(@content varchar(20))
    returns varchar(8000)
    as 
    begin
    declare @str varchar(8000)
    set @str=''
    select @str=@str+','+rtrim(Number) from tb_ContMX where conID=@content
    set @str=right(@str,len(@str)-1) where @str<>''
    return @str
    end
    go--语句:
    select conID,dbo.GetContMXNumber(conID) Number from tb_Cont
      

  2.   

    create function GetContMXNumber
    (@id int)
    Returns Varchar
    As Begin
      Declare @a Varchar(4000)
        Select @a=@a+',' From tb_ContMX Where ID=@ID    Return @aEnd
      

  3.   

    谢谢大力、欧乐
    大力的代码执行到下一条时提示出错:
    set @str=right(@str,len(@str)-1) where @str<>''
    错误信息:
    服务器: 消息 156,级别 15,状态 1,过程 GetContMXNumber,行 8
    在关键字 'where' 附近有语法错误。
    去掉这一行可以,可是结果多一个","该怎么改呢?我刚学SQLServer...请多指教谢谢
      

  4.   

    --去掉where就行了.create function GetContMXNumber(@content varchar(20))
    returns varchar(8000)
    as 
    begin
    declare @str varchar(8000)
    set @str=''
    select @str=@str+','+rtrim(Number) from tb_ContMX where conID=@content
    set @str=right(@str,len(@str)-1)
    return @str
    end
    go--语句:
    select conID,dbo.GetContMXNumber(conID) Number from tb_Cont
      

  5.   

    去掉Where不行。如果在tb_Cont中没有相应的tb_ContMX就会出错。
      

  6.   

    这样改试试
    create function GetContMXNumber(@content varchar(20))
    returns varchar(8000)
    as 
    begin
    declare @str varchar(8000)
    set @str=''
    select @str=@str+','+rtrim(Number) from tb_ContMX where conID=@content
    if(@str<>'')
    begin
       set @str=right(@str,len(@str)-1)
    end
    return @str
    end
    go--语句:
    select conID,dbo.GetContMXNumber(conID) Number from tb_Cont
      

  7.   

    把set @str=right(@str,len(@str)-1) where @str<>''改为:
    select @str=right(@str,len(@str)-1) where @str<>''
      

  8.   

    create function GetContMXNumber
    (@id int)
    Returns Varchar
    As Begin
      Declare @a Varchar(4000)
        Select @a=@a+rtrim(Number)+',' From tb_ContMX Where ID=@ID    Return @aEnd