oracle报错——字符集不匹配

在执行查询下面语句时,出现了字符集不匹配的错误。

select 
  zsbh as 证书编号,
  zxri as 登记日期,
  '' as 需注销证书编号,
  '' as 需注销注销日期,
from cqk.dbo.zsb1
union
select 
  zsbh as 证书编号,
  zxri as 登记日期,
  '' as 需注销证书编号,
  '' as 需注销注销日期,
from cqk.dbo.zsb2


经过查资料,发现是字段类型为 NVARCHAR2() 常会发生的问题。

改为:

select 
  zsbh as 证书编号,
  zxri as 登记日期,
  N'' as 需注销证书编号,
  N'' as 需注销注销日期,
from cqk.dbo.zsb1
union
select 
  zsbh as 证书编号,
  zxri as 登记日期,
  N'' as 需注销证书编号,
  N'' as 需注销注销日期,
from cqk.dbo.zsb2

问题解决~

当出现Oracle中的CASE WHEN语句中字符集不匹配的情况时,可能是由于比较的字段类型不匹配所导致的。比,如果数据库中的字段类型是nvarchar2,而你在CASE WHEN语句中进行了字符比较,就会出现字符集不匹配的问题。 为了解决这个问题,有几种方法可以尝试。一种方法是使用类型转换函数,如使用TO_CHAR或CAST函数将字段转换为相应的字符类型。这样可以确保比较的字符类型是一致的。 另一种方法是使用CASE WHEN语句中的条件表达式进行特定值的转换。比如,如果你要将字段CUR_UNIT的值为"万元"转换为10000,值为"亿元"转换为100000000,可以使用类似下面的表达式:CASE WHEN t.CUR_UNIT = '万元' THEN 10000 WHEN t.CUR_UNIT = '亿元' THEN 100000000 END。这样可以避免字符集不匹配的问题。 总之,要解决Oracle中CASE WHEN语句字符集不匹配的问题,你可以使用类型转换函数,或者使用条件表达式进行特定值的转换。这样可以确保比较的字符类型一致,避免出现字符集不匹配的错误。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Oracle中由 case when 报错 ORA-12704:字符集不匹配的简易解决](https://blog.csdn.net/zd20041337/article/details/51163655)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [解决oracle sql语句判断函数case when else报错ORA-12704: 字符集不匹配](https://blog.csdn.net/SamdyTang/article/details/128190517)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值