搜索案例工作/简单案例不在Oracle中

时间:2013-01-18 16:30:48

标签: sql oracle10g case-when

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

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

但如果我把它写成Simple Case表达式,如下所示:

(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

有人可以帮我吗?

1 个答案:

答案 0 :(得分: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
---------------------