2016-09-28 8 views
0

条件文を使用してSELECT文で条件付きデータを取得するのが難しいです。ネストされたケース式SELECT

値がnullでない場合は外部条件チェックがあり、内部条件では値に特定の文字セットが含まれているかどうかがチェックされています。

select文:残念ながら

 refID = CASE externalID 
     WHEN IS NOT NULL THEN CASE internalType 
      WHEN CONTAINS(internalType,'B1') THEN 'C1' + externalID 
      WHEN CONTAINS(internalType,'B2') THEN 'C2' + externalID 
      ELSE 'Ext' 
      END 
     ELSE 'N/A' 
     END 

、このコードを実行すると、エラーメッセージ場合

refID = CASE 
       WHEN externalID IS NOT NULL THEN 
        CASE 
          WHEN internalType like '%B1%' THEN 'C1' + externalID 
          WHEN internalType like '%B2%' THEN 'C2' + externalID 
          ELSE 'Ext' 
        END 
       ELSE 'N/A' 
      END 
+0

CASE式ではなく、文を処理します。 – jarlh

+0

ケース外部IDがNULLではない場合... – jarlh

+0

ありがとうございますが、「CONTAINSの近くの構文が正しくない」というエラーが表示されました。 –

答えて

4

"正しくない構文が近く IS" で終わります
こんにちは
この場合、INSTR機能、

refID = CASE externalID 
    WHEN IS NOT NULL THEN CASE internalType 
     WHEN INSTR(internalType,'B1') THEN 'C1' + externalID 
     WHEN INSTR(internalType,'B2') THEN 'C2' + externalID 
     ELSE 'Ext' 
     END 
    ELSE 'N/A' 
    END 

INSTR - instring機能が必要な文字列またはパターンをチェックし、データ

+0

@ W.H私はそこにそれを残しておくべきです、 – JohnHC

+0

ありがとう、それはそれを修正しました。残念ながら、表は索引付けされていないため、CONTAINSは使用できません。 –

1

にフィールドを移動し

+0

正確なパターンチェックのためにINSTR関数を使用する必要があります –

+0

ありがとう、それは素晴らしいです!正常に動作します。 –

+0

お手伝いをいたします –

関連する問題