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.

猜你喜欢

转载自www.cnblogs.com/Oliver1993/p/12719250.html
今日推荐