博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL模糊查询碰到空值怎么办?
阅读量:6935 次
发布时间:2019-06-27

本文共 1140 字,大约阅读时间需要 3 分钟。

作者:iamlaosong

SQL查询语句用%来做模糊查询。程序中一般要求用户输入部分信息,依据这个信息进行模糊查询。

比如用户输入340104,以下这条语句就是查询昨天客户代码为340104开头的全部邮件信息:

select *  from tb_evt_mail_clct t where t.clct_date = trunc(sysdate - 1)   and t.sender_cust_code like '340104%'
当用户什么都不输入须要查询昨天全部邮件信息时,以下的语句并不能查询到全部信息,这条语句仅仅能查到全部大客户的邮件信息,查不到散户的邮件信息:

select *  from tb_evt_mail_clct t where t.clct_date = trunc(sysdate - 1)   and t.sender_cust_code like '%'
这是由于散户的客户代码为空值。以下这条语句能够同一时候兼顾上面两种情形(假定用0000代表空值):

有限定值:

select *  from tb_evt_mail_clct t where t.clct_date = trunc(sysdate - 1)   and nvl(t.sender_cust_code,'0000') like '340104%'
无限定值:

select *  from tb_evt_mail_clct t where t.clct_date = trunc(sysdate - 1)   and nvl(t.sender_cust_code,'0000') like '%'
限定值是0000时结果是全部散户:

select *  from tb_evt_mail_clct t where t.clct_date = trunc(sysdate - 1)   and nvl(t.sender_cust_code,'0000') like '0000%'

除了like。not like、not in 、<>等运算符号也都不包括空值,比如以下语句并不包括客户代码为空值的记录:

select *  from tb_evt_mail_clct t where t.clct_date = trunc(sysdate - 1)   and t.sender_cust_code <> '34122600200300'

要想包括。相同须要将条件改为:nvl(t.sender_cust_code,'0000') <> '34122600200300'

总之。当一个字段为空值时。表达式中不管是等于还是不等于,结果都为假,仅仅有 is null结果为真。

转载地址:http://xdvjl.baihongyu.com/

你可能感兴趣的文章
Linux下批量修改文件编码
查看>>
添加反爬策略1-User-Agent
查看>>
C程序设计导引(3)
查看>>
自己造容器List
查看>>
为什么你不应该自行更新 Drupal 网站?
查看>>
Java并发包--线程池框架
查看>>
CSS学习总结3:CSS定位
查看>>
java_Cookie添加和删除
查看>>
hadoop 1.2.1 安装配置
查看>>
程序员教程和书籍收藏
查看>>
创建帧动画
查看>>
使用Xcode 7 beta免费真机调试iOS应用程序
查看>>
Java并发基础03. 传统线程互斥技术—synchronized
查看>>
数据工厂模式,多种数据库选择 web.config 写法及相关操作
查看>>
ios面试题
查看>>
圣杯布局、双飞翼布局与flex布局实现
查看>>
控制条
查看>>
23种设计模式(一) 单例模式
查看>>
移动自动化相关名词解释
查看>>
testAPI
查看>>