这是一个涉及SUBSTRING
与Server 2008相等的问题。在我的问题中,我有一个名为LICNO
的列,用于处理许可证号。这些许可证号格式如下:
LPC-907
LCSW-517
我正在使用SUBSTRING
,如下所示:
CASE
WHEN SUBSTRING(LICNO,1,2) <> 'LA' THEN 'Architect'
WHEN SUBSTRING(LICNO,1,4) = 'CAP' THEN 'Certified Public Assistant'
WHEN SUBSTRING(LICNO,1,2) IS NULL THEN 'None'
ELSE 'Landscape Architect'
END AS LicenseType,
存储过程仅返回Architect和Landscape Architect。我正确使用SUBSTRING吗?
答案 0 :(得分:3)
目前,如果LICNO不以LA开头,则该声明将返回Architect。因此,如果LICNO以CAP开头,它将返回Architect。您需要为您的陈述找到正确的顺序。把&lt;&gt;在其他条件之后和ELSE之前'LA'。
答案 1 :(得分:2)
CASE
WHEN SUBSTRING(LICNO,1,2) = 'LA' THEN 'Landscape Architect'
WHEN SUBSTRING(LICNO,1,3) = 'CAP' THEN 'Certified Public Assistant'
WHEN SUBSTRING(LICNO,1,2) IS NULL THEN 'None'
ELSE 'Architect'
END AS LicenseType,
(关注@Melanie)
答案 2 :(得分:0)
我认为你可能使用了SUBSTRING
函数的错误字符数。如果你想让这个值等于CAP,那么我认为你应该使用3作为长度。另外,替换CASE语句的顺序:
CASE
WHEN SUBSTRING(LICNO,1,3) = 'CAP' THEN 'Certified Public Assistant'
WHEN SUBSTRING(LICNO,1,2) IS NULL THEN 'None'
WHEN SUBSTRING(LICNO,1,2) <> 'LA' THEN 'Architect'
ELSE 'Landscape Architect'
END AS LicenseType