2013-04-24 3 views
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 

Но когда я пытаюсь выполнить запрос, я получаю сообщение об ошибке «Character установлено несоответствие» в «ELSE„“» часть выражения CASE. Может ли кто-нибудь предложить, где я делаю это неправильно?

Спасибо santhosha

+0

@Indoknight Это вполне допустимо синтаксис Oracle и используется, когда вам нужно для указания имени, содержащего строчные буквы. –

+0

Каков тип данных 'Created_By'? – IndoKnight

+0

@ Yasir Спасибо за информацию. – IndoKnight

ответ

2

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 
+0

Друг, большое спасибо за вашу помощь. Он работал превосходно – santhosha

+0

Также, если вы не возражаете, не могли бы вы объяснить, почему мы вставляем «N» перед нашими критериями? – santhosha

+0

Я предполагаю, что это намек на Oracle, что следующая строка имеет тип 'NCHAR' (набор символов Unicode) иначе он, вероятно, думает, что это «ЧАР». –

Смежные вопросы