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,这样排查起来更方便