2008-12-11 217 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