oracle Union 中 ORA-12704:字符集不匹配问题的解决 .

在使用Union all连接时,若A集合中某列为nvarchar2或nvarchar类型,而B集合中无此列,用‘ ’ 来代替是会报字符集不匹配,解决方法有两种,见下面的示例

例:

 

  1. select '中国','China',cast('中国' as nvarchar2(10)) T  
  2. from dual  
  3. union all  
  4. select '美国','USA',''   
  5. from dual;  
select '中国','China',cast('中国' as nvarchar2(10)) T
from dual
union all
select '美国','USA','' 
from dual;

如上,T的类型为nvarchar2,长度为10,如果直接这样查询,就会报字符集不匹配,那么怎么来处理呢,可通过两种方法来解决

 

1.to_char()

  1. select '中国','China',to_char(cast('中国' as nvarchar2(10))) T  
  2. from dual  
  3. union all  
  4. select '美国','USA',''   
  5. from dual;  
select '中国','China',to_char(cast('中国' as nvarchar2(10))) T
from dual
union all
select '美国','USA','' 
from dual;

2. 用N' ',N''是将‘’转换为Unicode编码

 

 

  1. select '中国','China',cast('中国' as nvarchar2(10)) T  
  2. from dual  
  3. union all  
  4. select '美国','USA',N''   
  5. from dual;  
select '中国','China',cast('中国' as nvarchar2(10)) T
from dual
union all
select '美国','USA',N'' 
from dual;

这样就可以解决字符集不匹配问题了

posted on   荣锋亮  阅读(5020)  评论(0编辑  收藏  举报

编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示