Oracle nvarchar和varchar相互转换、联合查询
清泛原创
场景:联合查询(union all)Oracle两张表,同一组字段的数据类型不一致,分别是nvarchar和varchar。
这时联合查询报错如下:ora12704:字符集不匹配。
解决方法:需要对数据类型进行转换。
Specifying the USING CHAR_CS argument converts text into the database character set. The output datatype is VARCHAR2.
Specifying the USING NCHAR_CS argument converts text into the national character set. The output datatype isNVARCHAR2.
(A表字段c_xxx:varchar,B表c_xxx:nvarchar)
select translate(c_xxx USING NCHAR_CS) from A
union all
select c_xxx from B
或者
select c_xxx from A
union all
select translate(c_xxx USING CHAR_CS) from B
注意:translate函数括号中没有逗号。
1、varchar:
可变长度的 非Unicode 数据,最长为8,000个字符。
2、nvarchar:
可变长度的 Unicode 数据,最长为4,000个字符。
这时联合查询报错如下:ora12704:字符集不匹配。
解决方法:需要对数据类型进行转换。
Specifying the USING CHAR_CS argument converts text into the database character set. The output datatype is VARCHAR2.
Specifying the USING NCHAR_CS argument converts text into the national character set. The output datatype isNVARCHAR2.
(A表字段c_xxx:varchar,B表c_xxx:nvarchar)
select translate(c_xxx USING NCHAR_CS) from A
union all
select c_xxx from B
或者
select c_xxx from A
union all
select translate(c_xxx USING CHAR_CS) from B
注意:translate函数括号中没有逗号。
1、varchar:
可变长度的 非Unicode 数据,最长为8,000个字符。
2、nvarchar:
可变长度的 Unicode 数据,最长为4,000个字符。