日期:2014-05-19  浏览次数:20572 次

请帮我写个函数
请帮我写个函数
我有一张表test,如下:
    col1       col2
    01           中国
    22           英国
    08           美国
    11           日本
    30           法国
我想写一个函数,
create   function   FUNC
(
  @Var1     varchar(200),   --在此传入   01/22/30
  @Var2     varchar(8)         --在此传入   /
)
return   varchar(200)
as
  begin
  declare   @back   varchar(200)
      ......
  return     @back           --我想返回   中国/英国/法国
  end
请问这个函数要怎样写

------解决方案--------------------
--我指会写存储过程

--创建测试环境
create table test(col1 varchar(10),col2 varchar(20))

--插入测试数据
insert test(col1,col2)
select '01 ', '中国 ' union all
select '22 ', '英国 ' union all
select '08 ', '美国 ' union all
select '11 ', '日本 ' union all
select '30 ', '法国 '

go

--求解过程
create proc func @Var1 varchar(8000) --在此传入 01/22/30
as
begin
update test
set @var1 = replace(@var1,col1,col2)
select @var1 --我想返回 中国/英国/法国
end

go

exec func '01/22/30 '

--删除测试环境
drop table test
drop proc func

/*--测试结果
中国/英国/法国
*/



------解决方案--------------------
create function FUNC
(
@Var1 varchar(200), --在此传入 01/22/30
@Var2 varchar(8) --在此传入 /
)
return varchar(200)
as
begin
declare @back varchar(200)
while charindex(@var2,@var1)> 0
begin
select @back=@back+col2 from test where col1=left(@var1,2)
set @var1=stuff(@var1,charindex(@var2,@var1),2, ' ')
end
return @back --我想返回 中国/英国/法国
end

------解决方案--------------------
create function FUNC
(
@Var1 varchar(200), --在此传入 01/22/30
@Var2 varchar(8) --在此传入 /
)
return varchar(200)
as
begin
declare @back varchar(200)
while charindex(@var2,@var1)> 0
begin
select @back=@back+ '/ '+col2 from test where col1=left(@var1,2)
set @var1=stuff(@var1,charindex(@var2,@var1),2, ' ')
end
if len(@back)> 0
return stuff(@back,1,1, ' ')
else
return @back --我想返回 中国/英国/法国
end

------解决方案--------------------
--如果要将结果放到变量里
create proc func @Var1 varchar(8000),@var2 varchar(8000) out --在此传入 01/22/30
as
begin
update test
set @var1 = replace(@var1,col1,col2)
select @var2 = @var1 --我想返回 中国/英国/法国
end

go

declare @var2 varchar(8000)
exec func '01/22/30 ',@var2 out

select @var2


------解决方案--------------------
--创建测试环境
create table test(col1 varchar(10),col2 varchar(20))
go
--插入测试数据
insert test(col1,col2)
select '01 ', '中国 ' union all
select '22 ', '英国 ' union all