create function getstr(@content char(20))
returns varchar(2000)
as 
begin
declare @str varchar(2000)
set @str=''
select @str=@str+','+rtrim(文子列) from 游戏字典表
where content<=@content
set @str=right(@str,len(@str)-1)
return @str
end
go语句:
select 列1,getstr(列1) from 游戏字典表

解决方案 »

  1.   

    个人以为如果是SQL SERVER 2000,支持用户定义的函数。假设该函数是定义为
    FUNCTION CompareStr(src:string;dst:string):boolean
    begin
       //判断DST是否被包含在SRC,如果是则返回TRUE,否则返回false
       //抱歉,我只是比较熟悉DELPHI的写法.
    end;
    然后可以如此处理:(意思和大力的差不多)
    FUNCTION GetGameType(Gameid:string):string;
    begin
       //本写法是DELPHI和MS SQL的混合体,具体请自行解释
       //定义光标,假定表格名称是GameType
       //然后遍历光标,发现匹配的则result:=result+[中文类型名称]
       //declare @@result string
       declare @@Same boolean
       declare @@gameid string
       declare @@ganmename string
       select @@result=''
       while ......
       begin
          fetch next   gametype.gameid,gametypename into      @@nowid,@@gamename
          select @@same=compare(gameid,gametype.gameid);
       
          if @@same=true @@result=@@result+@@gamename      //next record
        end;
    end;
      

  2.   

    declare @a table (id varchar(10),name varchar(20))
    insert @a select '10000000',      '暴力游戏'
    union all select '01000000',      '网络游戏'
    union all select '00100000',      '色情游戏'declare @b varchar(10)
    set @b='01100000'
    select top 8 identity(int,1,1) as N into #t from sysobjectsselect a.* from @a a,#t b,(select @b as id1) c where substring(id,N,1)=substring(id1,N,1) and substring(id1,N,1)=1
    set @b='10100000'
    select a.* from @a a,#t b,(select @b as id1) c where substring(id,N,1)=substring(id1,N,1) and substring(id1,N,1)=1drop table #t
      

  3.   

    select typeID ,
     ((case left(typeID,1) when '1' then '暴力游戏,' end ) + 
     (case substring(typeID,2,1) when '1' then '网络游戏,' end ) + 
     (case substring(typeID,3,1) when '1' then '色情游戏,' end ) ) as typeName 
    from uTable  
      

  4.   

    create procedure test
      @pi_id char(8),
      @po_type varchar(200) output
    begin
      declare @pm_length int,
              @pm_bit char(1),
              @pm_tmp_id char(8)
      set @po_type = ''
      set @pm_length = datalength(@pi_id char)
      while (@pm_length >= 0)
      begin
        set @pm_bit = substring(@pi_id char, @pm_length, 1)
        if @pm_bit = '1'
        begin
          set @pm_tmp_id = replicate('0',8 - @pm_length) + '1' +       replicate('0', 8 - @pm_length - 1)
          select @po_type = ',' + column_gamename from table_games
          where column_gameid = @pm_tmp_id
        end
        set @pm_length = @pm_length - 1
      end
      set @pm_length = datalength(@po_type)
      if @pm_length > 0 
      begin
        set @po_type = substring(@po_type, @pm_length - 1, @pm_length -1)
      end
    end