-1

这是一个处理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 吗?

4

3 回答 3

3

目前,如果 LICNO 不以 LA 开头,则该语句将返回 Architect。因此,如果 LICNO 以 CAP 开头,它将返回 Architect。您需要为您的报表找到正确的顺序。将 <> 'LA' 放在其他条件之后和 ELSE 之前。

于 2013-03-19T19:48:47.203 回答
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,

(following @Melanie)

于 2013-03-19T19:53:11.787 回答
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

http://msdn.microsoft.com/en-us/library/ms187748.aspx

于 2013-03-19T19:50:39.603 回答