其中a、b是固定字串, 可放到函数内部也行,主要是这样的功能在T-SQL函数中要怎么样来完成。CREATE FUNCTION dbo.test_Fun
(
@c nvarchar(20)
)
RETURNS nvarchar(60)
AS
BEGIN
declare @a nvarchar(2000)
declare @b nvarchar(2000)
a='一年级, 二年级, 三年级, 四年级'
b='2001-2002, 2002-2003, 2003-2004, 2004-2005' --这里的处理内容怎么写? RETURN --/* value */
END
(
@c nvarchar(20)
)
RETURNS nvarchar(60)
AS
BEGIN
declare @a nvarchar(2000)
declare @b nvarchar(2000)
a='一年级, 二年级, 三年级, 四年级'
b='2001-2002, 2002-2003, 2003-2004, 2004-2005' --这里的处理内容怎么写? RETURN --/* value */
END
CREATE FUNCTION dbo.test_Fun
(
@a nvarchar(2000),
@b nvarchar(2000),
@c nvarchar(20)
)
RETURNS nvarchar(60)
AS
BEGIN
RETURN substring(@b,(charindex(@c,@a) - 1) / 4 * 10 + 1,9)
END
GO
--这里传入a、b、c 执行函数
SELECT dbo.test_Fun('一年级,二年级,三年级','2001-2002,2002-2003,2003-2004','二年级')
GO
(
@a nvarchar(2000),
@b nvarchar(2000),
@c nvarchar(20)
)
RETURNS nvarchar(60)
AS
BEGIN
SELECT @a = replace(@a,' ',''),@b = replace(@b,' ','')
RETURN substring(@b,(charindex(@c,@a) - 1) / 4 * 10 + 1,9)
END
GO
--这里传入a、b、c 执行函数
SELECT dbo.test_Fun('一年级, 二年级, 三年级','2001-2002, 2002-2003, 2003-2004','三年级')
GO
b='2001-2002, 2002-2003, 2003-2004, 2004-2005'
如: a中"一年级" 对应 b中"2001-2002" 其他对应关系如下:
a b
一年级 2001-2002
二年级 2002-2003
三年级 2003-2004
四年级 2004-2005
我输入c 后要先在a中查找如果没有找到则返回"", 找到则返回对应的b
如:c="二年级" 则return "2002-2003"
c="高一" 则return ""
@a nvarchar(2000),
@b nvarchar(2000),
@c nvarchar(20)
)returns nvarchar(60)
as
begin
declare @i int set @i=charindex(',',@a+',')
while @i>1 and ltrim(rtrim(left(@a,@i-1)))<>@c
select @a=substring(@a,@i+1,2000)
,@b=substring(@b,charindex(',',@b+',')+1,2000)
,@i=charindex(',',@a+',')
return(ltrim(rtrim(left(@b,charindex(',',@b+',')-1))))
end
go--调用实现查询
select dbo.test_fun('一年级, 二年级, 三年级'
,'2001-2002, 2002-2003, 2003-2004'
,'二年级')