10 ORA系列:ORA-12704 字符集不匹配 character set mismatch
如果希望對常見的Oracle異常ORA報錯解決方案有系統的瞭解,請看《ORACLE系列異常總結ORA》。
關於Union 中 ORA-12704:字符集不匹配 character set mismatch
在使用Union all連線時,若A集合中某列為nvarchar2或nvarchar型別,而B集合中無此列,用‘ ’ 來代替是會報字符集不匹配。
解決方法有三種,見下面的示例
例:
select '中國', 'China', cast('中國' as nvarchar2(10)) T from dual union all select '美國', 'USA', '' from dual; |
如上,T的型別為nvarchar2,長度為10,如果直接這樣查詢,就會報字符集不匹配,那麼怎麼來處理呢?
1.to_char()
select '中國', 'China', to_char(cast('中國' as nvarchar2(10))) T from dual union all select '美國', 'USA', '' from dual; |
2. 用N' ',N''是將‘’轉換為Unicode編碼
select '中國', 'China', cast('中國' as nvarchar2(10)) T from dual union all select '美國', 'USA', N'' from dual; |
3.使用cast()將字符集轉換為相同
select '中國', 'China', cast('中國' as nvarchar2(10)) T from dual union all select '美國', 'USA', cast('' as nvarchar2(10)) T from dual; |
這樣就可以解決字符集不匹配問題了