其中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

解决方案 »

  1.   

    -- 注意,我将你的', '中的' '去掉了。
    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
      

  2.   

    CREATE FUNCTION dbo.test_Fun
        (
             @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
      

  3.   

    a、b 是一组以"," 分隔的字串,他们是一一对应的。a='一年级, 二年级, 三年级, 四年级'
    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 ""
      

  4.   

    create function test_Fun(
    @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'
    ,'二年级')