0

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

(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

我在线上遇到ORA-12704: character set mismatch错误when 'RW'

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

有人可以帮我吗?

4

1 回答 1

0

“我认为这可能是一个编码问题,但我不知道如何将常量字符串“转换”为 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
---------------------
于 2013-01-19T08:19:07.547 回答