標籤:io 使用 ar strong sp div 問題 on bs
在使用Union all串連時,若A集合中某列為nvarchar2或nvarchar類型,而B集合中無此列,用‘ ’ 來代替是會報字元集不匹配,解決方案有兩種,見下面的樣本
例:
- select ‘中國‘,‘China‘,cast(‘中國‘ as nvarchar2(10)) T
- from dual
- union all
- select ‘美國‘,‘USA‘,‘‘
- from dual;
select ‘中國‘,‘China‘,cast(‘中國‘ as nvarchar2(10)) Tfrom dualunion allselect ‘美國‘,‘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;
select ‘中國‘,‘China‘,to_char(cast(‘中國‘ as nvarchar2(10))) Tfrom dualunion allselect ‘美國‘,‘USA‘,‘‘ from dual;
2. 用N‘ ‘,N‘‘是將‘’轉換為Unicode編碼
- select ‘中國‘,‘China‘,cast(‘中國‘ as nvarchar2(10)) T
- from dual
- union all
- select ‘美國‘,‘USA‘,N‘‘
- from dual;
select ‘中國‘,‘China‘,cast(‘中國‘ as nvarchar2(10)) Tfrom dualunion allselect ‘美國‘,‘USA‘,N‘‘ from dual;
這樣就可以解決字元集不匹配問題了
oracle Union 中 ORA-12704:字元集不匹配問題的解決 .