参数有2个,一个是判断类型@no,另一个是被判断的字符串变量,返回一个逻辑值,语句表达意思就在下面,谁能帮我改一改,我是新手,实在不会做。
create function GET(@no int,@st varchar(10)) 
returns bit
as
begin
case @no
when 1 then returns (len(@st)=5)
when 2 then returns (left(@st,1)='2')
when 3 then returns (right(@st,1)='A')

end
end
go

解决方案 »

  1.   

    create function GET(@no int,@st varchar(10)) 
    returns bit
    as
    begin
    return(convert(bit,
    case @no
    when 1 then case when len(@st)=5 then 1 else 0 end
    when 1 then case when left(@st,1)='2' then 1 else 0 end
    when 1 then case when right(@st,1)='A' then 1 else 0 end
    end))
    end
    go
      

  2.   

    貌似是要做判断,这样的语句不能用Case写,要用多重IF...ELSE
      

  3.   

    sql中没有布尔类型, 所以 len(@st)=5 不是合法的表达式而case when 是函数, 所以无法在里面用return
      

  4.   

    Case原来还可以这样嵌套^^;lz的逻辑来看,貌似是这样的把老大的稍微修改一下
    create function GET(@no int,@st varchar(10)) 
    returns bit
    as
    begin
    return(convert(bit,
    case @no
    when 1 then case when len(@st)=5 then 1 else 0 end
    when 2 then case when left(@st,1)='2' then 1 else 0 end
    when 3 then case when right(@st,1)='A' then 1 else 0 end
    end))
    end
    go