Sql 字符集不匹配oracle错误

Sql 字符集不匹配oracle错误,sql,oracle,Sql,Oracle,我有这样一个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

我有这样一个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
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
但是当我尝试运行查询时,在大小写表达式的“ELSE”部分出现了一个错误“Character set mismatch”。有人能告诉我哪里做错了吗

多谢各位 桑托沙

引用你的创作。“创作人”可能是
NVARCHAR2

试着这样做:

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

@IndowKnight这是Oracle中非常有效的语法,当您需要指定包含小写字母的名称时使用。什么是“Created_By”?@Yasir感谢您提供的信息。如果您不介意,请解释我们为什么插入“N”在我们的标准之前,我想这是对Oracle的一个提示,下面的字符串类型是
NCHAR
(Unicode字符集),否则它可能会认为它是
CHAR