PL/SQL Character set mismatch

1.出现原因

在进行union all的操作时,如果两个列的字符集不匹配,就会报此错误。在Oracle中varchar(char)和nvarchar(nchar)所使用的字符集是不同的,前者使用8-bit codepage,后者使用unicode.虽然codepage在空间上消耗更少,但是使用unicode好处在兼容性更强,特别是在于其他系统交互的时候减少了转换所需消耗的时间。

2.解决方法

核心思路是将varchar转换为nvarchar或者将nvarchar转换为varchar,这里提供两个方法以供参考。

2.1 N

对于常量,再其前边加N可以将其转换为nchar

2.1 to_char() / to_nchar()

TO_CHAR:

TO_CHAR (character) converts NCHAR, NVARCHAR2, CLOB, or NCLOB data to the database character set. The value returned is always VARCHAR2.

TO_NCHAR:

TO_NCHAR (character) converts a character string, CHAR, VARCHAR2, CLOB, or NCLOB value to the national character set. The value returned is always NVARCHAR2.

PL/SQL Character set mismatch

上一篇:[sql]mybatis中动态sql


下一篇:[sql]mysql中使用 where 1=1和 0=1 的作用及好处