比如这段SQL:

select r1.USERCODE, r1.ROLEID, r1.APQPID, '' SUPPLIERCODE
from SQM_APQP_MEMBER_ROLE r1
where r1.APQPID = 4393
union
select r1.USERCODE, r1.ROLEID, r1.APQPID, s.SUPPLIERCODE
from SQM_APQP_SUPPLIER_MEMBER r1
left join SQM_APQP_SUPPLIER s on s.USERCODE = r1.USERCODE
where r1.APQPID = 4393

我在测试库完全能执行,发布生产后就不能执行,报字符集不匹配的异常,当时吓尿了。Union前后两个子查询都能单独执行,一旦连接就报错。
首先测试和生产的数据库字符集都是UTF8,不是这个问题,然后比较字段类型时发现不同:s.SUPPLIERCODE 在测试的类型是varchar2,而生产是nvarchar2
然后就找到了问题,字段类型不一致时不能进行union连接,我用’’做了一个默认值,数据库默认为varchar2,所以生产报错。。。这里涉及一个点,varchar2可以兼容升级成nvarchar2,但不能向下兼容,所以当时就只能重新添加新字段(varchar2),把值复制过去,删除旧字段,重命名新字段。
从代码上解决的话,把空字符可以直接用null定义,但就不能发现问题所在。我觉得更好的解决的话,直接测试和生产脚本同步一下。另外,还有两个函数可以用:cast('xxx' as nvarchar2(50))to_char(s.SUPPLIERCODE),可以使字段类型保持一致。

Oracle数据库 union连接时报 字符集不匹配 异常相关推荐

  1. ftp无法与服务器建立连接_建立与Oracle数据库服务器连接的两种连接模式

    建立与Oracle数据库服务器连接的两种连接模式(专用服务器与共享服务器) 在建立Oracle数据库的时候,应该会在数据库建立助手向导上面看到这么一个选项,就是数据库的连接模式采用什么方式.在Orac ...

  2. oracle 游标 904,如何解决Oracle数据库游标连接超出问题

    如何解决Oracle数据库游标连接超出问题 发布时间:2020-07-21 10:57:35 来源:亿速云 阅读:103 作者:小猪 这篇文章主要讲解了如何解决Oracle数据库游标连接超出问题,内容 ...

  3. matlab连接mysql教程视频_Matlab建立到Oracle数据库的连接

    Linux下的配置过程和Windows一样,如下:1.将Oracle JDBC的JAR包拷贝到Matlab的相关目录(..\matlab\java\jar\toolbox\)下. 一.Matlab通过 ...

  4. 远程链接oracle数据库,远程连接Oracle数据库

    首先,讲明一下我为什么要用Oracle数据库.这是手头的一个项目,我师兄负责写后台,而数据库由甲方建立并且管理.现在我也得接管师兄的这个项目了,理所应当已经配好环境,装好软件来接收项目.话不多少,下面 ...

  5. arcgis读取oracle数据库,arcgis连接Oracle数据库

    arcgis连接Oracle数据库 配置声明:本人的电脑是win10 64位,安装的Oracle是oracleR11gr2 64  arcgis版本位10.2 安装是在同一台电脑上. 一.首先是安装O ...

  6. Oracle数据库表连接查询并分页SQL语句提示未明确定义列

    Oracle数据库表连接查询并分页SQL语句提示未明确定义列 两张表中的字段: t_product t_category product_id category_id product_name cat ...

  7. oracle的url配置说明,Oracle数据库url连接最后一个orcl代表的是配置的数据库SID

    Oracle数据库url连接最后一个orcl代表的是配置的数据库SID 今天生产上项目启动访问 一个数据库的时候,出现了 ORA-12505, TNS:listener does not curren ...

  8. Oracle数据库远程连接方式之一:不需要安装客户端软件方法!

    连接Oracle数据库,通过远程的方式,有很多种.这里主要是跟大家说明一个简单的方法:不需要安装软件的方法! 具体内容: 1.在Oracle官网上下载程序. 下载地址:http://www.oracl ...

  9. Oracle 数据库sql语句查看字符集,PG数据库查询字符集方法

    [Oracle 数据库查询字符集] 查询出 NLS_NCHAR_CHARACTERSET 参数的值即是数据库的字符集. select * from nls_database_parameters; [ ...

最新文章

  1. 你真的了解JavaScript的比较运算符(==,!=,===,!===,=,=,,)吗?
  2. CTFshow php特性 web90
  3. Java 第三周总结
  4. 自动化测试之alert弹窗的切换
  5. 基于笛卡尔坐标系下的三边定位的研究(TOA方式定位)
  6. centos7查看当前系统时间、_CentOS7.4.1708查看系统相关信息及系统的初步优化
  7. discuz mysql_搭建Discuz! (mysql+apache+Discuz! )
  8. for循环和数组练习
  9. njx如何实现负载均衡_负载均衡是怎么做的~
  10. Docker最全教程之使用TeamCity来完成内部CI、CD流程(十七)
  11. FreeWheel是一家怎样的公司?| 人物志
  12. pcl如何设置colorbar_突然加更 | 子图、colorbar和标题
  13. vc++6.0工具栏自绘按钮程序
  14. 浅谈算法和数据结构: 十二 无向图相关算法基础
  15. 用友数据库服务器如何修改,用友u8数据库服务器怎么设置
  16. Linux 的shell脚本的分享,运用了多个不同的方法,实现使用脚本批量巡检服务器,非常有借鉴作用...
  17. 基于SVM,KNN,CNN的数字图像识别
  18. 怎么提取PDF页面,PDF页面提取的操作步骤
  19. 遗传算法中常见遗传算子
  20. 项目——3——lnmp-gitlab-jenkins-ansible

热门文章

  1. 解析一下p2p网络的原理?
  2. 计算机操作系统第五版-第三章课后习题
  3. python制作植物大战僵尸_Python植物大战僵尸
  4. 掌握华为IPV6的ospfv3路由配置
  5. NLP-D21-UNICORNpytorch实践
  6. 中电金信Gien享汇・大数据专题|金融创新应用场景下的数据资产管理实践
  7. 从零开始搭建仿抖音短视频APP-开发用户业务模块(2)
  8. 【地球科学】DEM数据简要总结及ALOS PALSAR12.5m数据获取和对比显示
  9. 计算机应用基础word2010文字处理,计算机应用基础Word2010文字处理操作题.doc
  10. evo中轨迹绘制曲线设置