union all两个结果集报ORA-12704: character set mismatch错误


错误:当union all两个结果集时,报ORA-12704: character set mismatch错误,例如:

select colA from TableA
union
select colB from TableB

         

原因:是字段类型不匹配导致的,比如TableA的colA字段类型是nvarchar类型,而colB的字段类型是varchar类型,两者类型不统一,因此会报字符集不匹配的错误

 

解决方案:可以将其中一个结果集的类型做下转换,如:

select colA from TableA
union
select n''|| colB from TableB  --通过在=追加n''||将colB转换为nvarchar

  注意:有时,union两端的结果集的字段过多,导致排查起来特别困难,可分别将两端的结果集用create table as的方式创建一个临时表,然后再比对两个临时表的DDL,这样排查起来更方便

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM