2017-09-20 5 views
1

次のコードを使用して、書式設定されたフィールドから姓のみを取得するビューに列を追加しようとしています「姓、姓」:フィールドにカンマがある場合にコンマが存在しない場合、ビューエラーは、次の質問から参照としてコンマを持つ可能性のある列から選択するためのSQL Caseステートメントのアシスト

VALUE(RTRIM(SUBSTR(A.PREVIOUS_NAMES,1,LOCATE(',', A.PREVIOUS_NAMES)-1)), '') 
AS "PREVIOUS_NAME", 

これは、しかし、正常に動作します。
SQLCode=-138 flagging on large count tables but not small DB2

私はカンマが存在する場合に選択するには、これに対応するcase文を思い付くしようとしましたが、私は失敗してきた、と私は経験豊富な人からの支援や提案を求めています。

RTRIM(
    CASE WHEN LOCATE(",", A.PREVIOUS_NAMES) = 0 
    THEN A.PREVIOUS_NAMES 
    ELSE SUBSTR(A.PREVIOUS_NAMES,1,LOCATE(",", A.PREVIOUS_NAMES)-1) 
    END) AS "PREVIOUS_NAME" 

それは非常に洗練されていないだし、それは「それが使用されているコンテキストでは有効ではありません」と言ってくれSQLCODE-206を与えます。

ご協力いただきありがとうございます!

答えて

0

私は、DB2でこれを行っていないが、この周りの一般的な方法は、コンマを追加することです:

VALUE(RTRIM(SUBSTR(A.PREVIOUS_NAMES, 1, LOCATE(',', A.PREVIOUS_NAMES || ',') - 1)), '') 
AS "PREVIOUS_NAME", 
+0

これは私が達成しようとしたまさにでした。ゴードンさんありがとうございました。 – XB1213

関連する問題