oracle - Oracle 中的字符集不匹配错误

标签 oracle

我正在尝试运行以下查询:

SELECT Script from (

SELECT 9 as ColOrder, ' INSERT INTO PROJ VALUES(' || ID || ',''' || Name || ''', ''' || Version || ''', ''ABCD'', sysdate , ''ABCD'', sysdate);' as Script FROM PROJ where Name like '%[Param.1]%'

union

SELECT 11 as ColOrder,' INSERT INTO PROJMOD VALUES(' || ID || ', ' || ProjID || ', ' || ModID || ', ' || ObjID || ', ''ABCD'', sysdate, ''ABCD'', sysdate);' as Script FROM PROJMOD where ProjID in ( select ID from PROJ where Name like '%[Param.1]%')

) x

Order by ColOrder

但它给了我ORA-12704:字符集不匹配错误。

当我单独运行两个 select 语句时,它会给出正确的输出,但是当我对两个 select 进行并集时,它会给出 tme 字符集不匹配错误。

这里可能出了什么问题?

最佳答案

正如您所确认的,有些内容是 NVARchar'd ..将 nvarchar 转换为 char 例如

SQL> create table tab(a nvarchar2(2));

Table created.

SQL> insert into tab values ('a');

1 row created.

SQL> select 1, 'hi' from dual
  2  union all
  3  select 2, a from tab;
select 1, 'hi' from dual
          *
ERROR at line 1:
ORA-12704: character set mismatch

失败,因为“A”是 NVARCHAR。所以 to_char 它:

SQL> select 1, 'hi' from dual
  2  union all
  3  select 2, to_char(a) from tab;

         1 'HI'
---------- ----
         1 hi
         2 a

或将字符串文字“hi”转换为 Nvarchar

   SQL> select 1, n'hi' from dual
      2  union all
      3  select 2, a from tab;

             1 N'
    ---------- --
             1 hi
             2 a

关于oracle - Oracle 中的字符集不匹配错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13354436/

相关文章:

mysql - SQL select语句优化(id,parent_id,child_ids)

database - Oracle PL/SQL-如何在异常子句的单独表中捕获不良数据?

java - 我尝试在带有 like 子句的选择查询中使用变量,但收到类似无效标识符的错误

sql - 使用绑定(bind)和空值命中 Oracle 索引的最佳查询

oracle - 从包内动态调用私有(private)过程

sql - 根据 oracle apex 中的条件更改穿梭机的文本颜色

mysql - 查找一列是否包含另一列

sql - Oracle v() 与 nv() 函数

oracle - 转换 XSD 日期 xs :dateTime to an Oracle Date

Oracle 使用多个 WHERE 子句更新单个表