搜索案例有效/简单案例在 Oracle 中不起作用



我在Oracle 10g SELECT查询中有以下搜索Case字段选择

(case 
    when LOADER_CELLS.CELL_MODE='RW' then 1
    when LOADER_CELLS.CELL_MODE='R' then 2
end) as CELL_EDIT_MODE_ID

但是如果我把它写成一个简单的表达式,如下所示:

(case LOADER_CELLS.CELL_MODE
    when 'RW' then 1
    when 'R' then 2
end) as CELL_EDIT_MODE_ID

我在when 'RW'行上得到ORA-12704: character set mismatch错误。

我看了看Oracle文档,似乎我的语法是正确的。http://docs.oracle.com/cd/B19306_01/server.102/b14200/expressions004.htm

有人能帮我一下吗?

"我认为这可能是一个编码问题,但我不知道如何将常量字符串"强制转换"为NVARCHAR"

你用"N"语法。

case LOADER_CELLS.CELL_MODE
    when n'RW' then 1
    when n'R' then 2
end

SQL> select case a when 'a' then 1 end from foo;
select case a when 'a' then 1 end from foo
                   *
ERROR at line 1:
ORA-12704: character set mismatch

SQL> select case a when n'a' then 1 end from foo;
CASEAWHENN'A'THEN1END
---------------------

最新更新