2

次のような SQL ステートメントがあります。

SELECT QUOTE_CREATION.*,
       CASE
          WHEN (SUBSTR (QUOTE_CREATION."PO_number", 1, 3)) = 'ARA'
          THEN
             'TE161938'
          WHEN (SUBSTR (QUOTE_CREATION."PO_number", 1, 3)) = 'HH-'
          THEN
             'TE161302'
          WHEN (SUBSTR (QUOTE_CREATION."PO_number", 1, 3)) = 'SMT'
          THEN
             'TE161101'
          WHEN (SUBSTR (QUOTE_CREATION."PO_number", 1, 3)) = 'AYP'
          THEN
             'TE108812'
          WHEN (SUBSTR (QUOTE_CREATION."PO_number", 1, 3)) = 'DKR'
          THEN
             'TE160895'
          ELSE
             QUOTE_CREATION."Created_By"
       END
          AS CORRECT_USER_ID
  FROM CCO.QUOTE_CREATION QUOTE_CREATION

しかし、クエリを実行しようとすると、CASE 式の "ELSE" 部分で "文字セットの不一致" というエラーが発生します。誰かが私が間違っているところを提案できますか?

ありがとうサントーシャ

4

1 に答える 1

3

QUOTE_CREATION."Created_By" はおそらくNVARCHAR2

次のようなことを試してください:

SELECT QUOTE_CREATION.*,
       CASE
          WHEN (SUBSTR (QUOTE_CREATION."PO_number", 1, 3)) = 'ARA'
          THEN
             N'TE161938'
          WHEN (SUBSTR (QUOTE_CREATION."PO_number", 1, 3)) = 'HH-'
          THEN
             N'TE161302'
          WHEN (SUBSTR (QUOTE_CREATION."PO_number", 1, 3)) = 'SMT'
          THEN
             N'TE161101'
          WHEN (SUBSTR (QUOTE_CREATION."PO_number", 1, 3)) = 'AYP'
          THEN
             N'TE108812'
          WHEN (SUBSTR (QUOTE_CREATION."PO_number", 1, 3)) = 'DKR'
          THEN
             N'TE160895'
          ELSE
             QUOTE_CREATION."Created_By"
       END
          AS CORRECT_USER_ID
  FROM CCO.QUOTE_CREATION QUOTE_CREATION
于 2013-04-24T11:24:42.123 に答える