-1

これは、Server 2008 との平等を扱う質問ですSUBSTRING。私の問題では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,

(@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 に答える