同一SQL语句在PLSQL Developer与SQL * PLUS工具中执行结果不一致
背景
今天遇到如下问题,同一sql语句在PLSQL Developer与SQL*PLUS工具中执行结果不一致,
sql语句如下
SELECT 'GROUPHEALTH_SEND_EMAIL' as interface,
SUM(decode(se.status, 1, 0, 1)) AS count
, 0 AS processed
, SUM(decode(se.status, 1, 0, 1)) - 0 AS notprocessed
FROM cuan_doic.policy po
LEFT JOIN cuan_doic.role ro ON ro.topactualid = po.topactualid
AND ro.kind = 'BASICRISKINFOPA'
LEFT JOIN cuan_doic.property pr ON pr.parentactualid = ro.actualid
AND pr.topactualid = po.topactualid
AND pr.kind = 'GROUPTYPE'
LEFT JOIN cuan_doic.t_sendemailinfo se ON po.policyno = substr(emailcontent, INSTR(se.emailcontent, '保单号:', 1, 1) + 4, 12)
AND se.senderowner = 'UW_WECHAT'
WHERE 1 = 1
AND po.productcode = '00130001'
AND po.CURRENTFLAG = 'Y'
AND pr.value = '$$600062000006'
AND po.policyno IS NOT NULL;
在PLSQLDeveloper工具执行结果如下
在SQL*PLUS中执行结果如下
出现这种问题时候,有些老司机会问,是不是连接的数据库不一致,用户不一致,表的数据是不是一致?
经确认以上都是一致的,只是执行SQL的工具不一致。
分析
仔细观察SQL语句,有如下连接条件。
ON po.policyno = substr(emailcontent, INSTR(se.emailcontent, '保单号:', 1, 1) + 4, 12)
这里有中文字符,是不是这个导致的? 为证实自己的想法,把中文字符用英文代替。
ON po.policyno = substr(emailcontent, INSTR(se.emailcontent, 'bdh', 1, 1) + 4, 12)
再次执行的结果如下:
PLSQLDeveloper工具
SQL*PLUS工具
解决
此SQL执行造成不同结果是因为中文字符导致的。
所以我们可以调整SSH工具的字符编码与设置NLS_LANG参数,经调整之后,SQLPLUS工具也能输出正确结果。
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"
同一SQL语句在PLSQL Developer与SQL * PLUS工具中执行结果不一致的更多相关文章
- 通过MyEclipse操作数据库,执行sql语句使我们不用切换多个工具,直接工作,方便快捷
通过MyEclipse操作数据库,执行sql语句使我们不用切换多个工具,直接工作,方便快捷.效果如下: 步骤1:通过MyEclipse中的window->show View->ot ...
- java动态拼接sql语句并且执行时给sql语句的参数赋值
问题 在这里举一个例子,比如我要做一个多条件模糊查询,用户输入的时候有可能输入一个条件,也有可能输入两个条件,这时执行查询的sql语句就不确定了,但可以用动态拼接sql语句来解决这个问题. 解决方法 ...
- 后台异常 - sql语句查询出的结果与dao层返回的结果不一致
问题描述 sql语句查询出的结果与dao层返回的结果不一致 问题原因 (1)select 中,查询的列名称重复,数据出现错乱 (2)使用不等号,不等号(!=,<>),查询出来的结果集不包含 ...
- 解决Windows x64bit环境下无法使用PLSQL Developer连接到Oracle DB中的问题
本文是原创文章,转载请注明出处: http://blog.csdn.net/msdnchina/article/details/46416455 解决Windows x64bit环境下无法使用PLSQ ...
- 通过PLSQL Developer导入SQL文件
1.点击“工具” 2.选中其中的“导入表(L)”,在按下图所示操作: PLSQL Developer会自动运行相关命令,在Tables中刷新即可看到新导入的表.
- SQL Server数据库sql语句生成器(SqlDataToScript)的使用(sql server自增列(id)插入固定值)
SqlDataToScript是根据表数据进行生成 Insert Into语句,此工具还有一个好处是可以对自增列插入固定值,例如:自增的列id值为5,但是5这个行值已经删除,如果想存储Id自增列值为5 ...
- 【sql语句】好用的sql语句之项目数据库学习总结
转载请注明出处:http://blog.csdn.net/pearyangyang/article/details/41115491 这几天学习公司系统的数据流向.主要涉及到几个表的数据. 可是表中的 ...
- 巧用DISPLAY_AWR函数与dba_hist_sqlstat结合查询SQL语句在指定节点指定时间范围内的历史执行计划
1.问题 通过调用dbms_xplan包中DISPLAY_AWR函数(DBMS_XPLAN.DISPLAY_AWR)可以从AWR数据中查看到SQL语句的历史执行计划,但是,DISPLAY ...
- ADO.NET 中可以发送包含多个SQL语句的批处理脚本到SQL Server,但是用MySQL的ODBC驱动不行
众所周知,我们在ADO.NET中可以使用NuGet包System.Data.SqlClient来操作SQL Server,并且ADO.NET是支持向SQL Server发送包含多个SQL语句的批处理脚 ...
随机推荐
- IT兄弟连 JavaWeb教程 请求转发案例
CheckServlet类与OutputServlet类之间为请求转发关系.在web.xml文件中,为CheckServlet映射的URL为"/check",为OutputServ ...
- 初识Sklearn-IrisData训练与预测
笔记:机器学习入门---鸢尾花分类 Sklearn 本身就有很多数据库,可以用来练习. 以 Iris 的数据为例,这种花有四个属性,花瓣的长宽,茎的长宽,根据这些属性把花分为三类:山鸢尾花Setosa ...
- nginx媒体压缩
1 gzip模块 参考:http://nginx.org/en/docs/http/ngx_http_gzip_module.html 浏览器的请求头里会表明Accept-Encoding 方式.服务 ...
- 【学习笔记】深入理解js原型和闭包(17)——补this
本文对<深入理解js原型和闭包(10)——this>一篇进行补充,原文链接:https://www.cnblogs.com/lauzhishuai/p/10078307.html 原文中, ...
- Ajax深入理解
Ajax Asynchronous JavaScript and XML 异步的JavaScript和XML ajax通过与后台服务器进行少量的数据交换,ajax可以使页面实现异步更新,即不需要重新 ...
- gp服务输出的结果文件输出到绝对路径
gp服务跟本地用arcmap执行gp有个不同,就是输出的文件一般只能输出到arcgis server默认的output目录里面(arcgis server有此限制,无论怎么配还是写到output目录里 ...
- iOS中使用 Reachability 检测网络区分手机网络类型 WiFi 和2 3 4 G
如果你想在iOS程序中提供一仅在wifi网络下使用(Reeder),或者在没有网络状态下提供离线模式(Evernote).那么你会使用到Reachability来实现网络检测. 写本文的目的 了解Re ...
- java实现批量修改指定文件夹下所有后缀名的文件为另外后缀名的代码
java实现批量修改指定文件夹下所有后缀名的文件为另外后缀名的代码 作者:Vashon package com.ywx.batchrename; import java.io.File; import ...
- Linux系统结构与终端控制台
Linux系统结构与终端控制台 作者:Vashon 时间:20150418 以下主要是对Linux系统终端控制台切换及基本操作的范例,其他的理论就不多说了,直接进入实践部分. Starting.... ...
- [Python學習筆記] 抓出msg信件檔裡的附件檔案
想要把msg信件檔案的附件抓出來做處理,找到了這個Python 模組 msg-extractor 使用十分容易,但是這個模組是要在terminal裡執行,無法直接打在IDLE的編輯器上 所以稍微做了修 ...