2008-12-11 215 views
0

SQL Server 2000中可能存在以下情况吗?SQL CASE语句

CREATE FUNCTION getItemType (@code varchar(18)) 
RETURNS int 
AS 
BEGIN 
Declare @Type tinyint 
Select @Type = case len(@code) 
WHEN 12,14,17 THEN 1 
WHEN 13,15,18 THEN 2 
WHEN 8,10 THEN 3 
ELSE 0 
END 
RETURN (@Type) 
END 

谢谢。

+0

当您在SQL Server 2000中运行时发生了什么? – DOK 2008-12-11 00:24:39

+0

语法不正确 – 2008-12-11 00:26:06

+0

靠近“,”和“结束” – 2008-12-11 00:26:36

回答

4

试试这个:

Select @Type = 
(select case 
WHEN len(@code) IN (12,14,17) THEN 1 
WHEN len(@code) IN (13,15,18) THEN 2 
WHEN len(@code) IN (8,10) THEN 3 
ELSE 0 
END) 
0
try 
    SELECT CASE 
      WHEN LEN(@gcode) IN(x, y, z) THEN a 
     END 
etc. 

,或者您可能需要

SELECT CASE LEN(@gcode) 
     WHEN x THEN a 
     WHEN y THEN a 
     END 

Here's the reference.

6

这应做到:

CREATE FUNCTION getItemType(@code VARCHAR(18)) 
RETURNS INT 
AS 
BEGIN 
    RETURN CASE 
     WHEN LEN(@code) IN (12,14,17) THEN 1 
     WHEN LEN(@code) IN (13,15,18) THEN 2 
     WHEN LEN(@code) IN (8,100) THEN 3 
     ELSE 0 
    END 
END