请帮我写个函数
请帮我写个函数
我有一张表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