10 ORA系列:ORA-12704 字符集不匹配 character set mismatch
如果希望對(duì)常見(jiàn)的Oracle異常ORA報(bào)錯(cuò)解決方案有系統(tǒng)的了解,請(qǐng)看《ORACLE系列異常總結(jié)ORA》。
?
關(guān)于Union 中 ORA-12704:字符集不匹配 character set mismatch
?
在使用Union all連接時(shí),若A集合中某列為nvarchar2或nvarchar類(lèi)型,而B(niǎo)集合中無(wú)此列,用‘ ’ 來(lái)代替是會(huì)報(bào)字符集不匹配。
?
解決方法有三種,見(jiàn)下面的示例
例:
| select?'中國(guó)', 'China', cast('中國(guó)'?as?nvarchar2(10)) T ??from?dual union?all select?'美國(guó)', 'USA', '' ??from?dual; |
?
如上,T的類(lèi)型為nvarchar2,長(zhǎng)度為10,如果直接這樣查詢(xún),就會(huì)報(bào)字符集不匹配,那么怎么來(lái)處理呢?
1.to_char()
| select?'中國(guó)', 'China', to_char(cast('中國(guó)'?as?nvarchar2(10))) T ??from?dual union?all select?'美國(guó)', 'USA', '' ??from?dual; |
?
2. 用N' ',N''是將‘’轉(zhuǎn)換為Unicode編碼
| select?'中國(guó)', 'China', cast('中國(guó)'?as?nvarchar2(10)) T ??from?dual union?all select?'美國(guó)', 'USA', N'' ??from?dual; |
?
3.使用cast()將字符集轉(zhuǎn)換為相同
| select?'中國(guó)', 'China', cast('中國(guó)'?as?nvarchar2(10)) T ??from?dual union?all select?'美國(guó)', 'USA', cast(''?as?nvarchar2(10)) T ??from?dual; |
這樣就可以解決字符集不匹配問(wèn)題了
?
總結(jié)
以上是生活随笔為你收集整理的10 ORA系列:ORA-12704 字符集不匹配 character set mismatch的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 09 ORA系列:ORA-06553 P
- 下一篇: Element 'dependency'