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
个人以为如果是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);
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