SQL模糊查询碰到空值怎么办?
作者: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结果为真。
SQL模糊查询碰到空值怎么办?的更多相关文章
- 8.mybatis动态SQL模糊查询 (多参数查询,使用parameterType)
多参数查询,使用parameterType.实例: 用户User[id, name, age] 1.mysql建表并插入数据 2.Java实体类 public class User { public ...
- sql模糊查询
SQL 模糊查询 在进行数据库查询时,有完整查询和模糊查询之分. 一般模糊查询语句如下: SELECT 字段 FROM 表 WHERE 某字段 Like 条件 其中关于条件,SQL提供了四种匹配模式: ...
- SQL模糊查询与删除多条语句复习
string IDlist="1,2,3"; 批量删除数据 StringBuilder strsql=new StringBuilder(); strSql.Append(&quo ...
- SQL 模糊查询
在进行数据库查询时,有完整查询和模糊查询之分.一般模糊查询语句如下: SELECT 字段 FROM 表 WHERE 某字段 Like 条件 其中关于条件,SQL提供了四种匹配模式:1,%:表示任意0个 ...
- SQL 模糊查询(like)
在进行数据库查询时,有完整查询和模糊查询之分. SQL模糊查询,使用like比较字,加上SQL里的通配符,请参考以下: 1.LIKE'Mc%' 将搜索以字母 Mc 开头的所有字符串(如 McBadde ...
- [转]SQL 模糊查询
在进行数据库查询时,有完整查询和模糊查询之分. 一般模糊查询语句如下: SELECT 字段 FROM 表 WHERE 某字段 Like 条件 其中关于条件,SQL提供了四种匹配模式: 1,% :表 ...
- Jmeter中JDBC Request和BeanShell PostProcessor的结合使用(SQL模糊查询)
[前言] 今天记录一下Jmeter中JDBC Request和BeanShell PostProcessor的结合使用的方法(SQL模糊查询) [步骤] 1.下载对应数据库的驱动包到jmeter安装目 ...
- SQL模糊查询条件的四种匹配模式
执行数据库查询时,有完整查询和模糊查询之分. 一般模糊语句格式如下: SELECT 字段 FROM 表 WHERE 某字段 LIKE 条件 其中关于条件,SQL提供了四种匹配模式: 1.% :表示任意 ...
- 有关SQL模糊查询
执行 数据库查询时,有完整查询和模糊查询之分. 一般模糊语句如下: SELECT 字段 FROM 表 WHERE 某字段 Like 条件 其中关于条件,SQL提供了四种匹配模式: 1,%:表示任意0个 ...
随机推荐
- Java面试——String、StringBuider以及StringBuffer的区别和使用场景
1. String.StringBuider.StringBuffer的区别 String是不可变的对象,因此在每次对String类型进行改变的时候,都会生成一个新的String对象,然后将指针指 ...
- awk中next以及getline用法示例
在awk中,如果调用next,那么next之后的命令就都不执行了.此行文本的处理到此结束,开始读取下一条记录并操作. 实例如下: [plain] view plain copy zoer@ubuntu ...
- 【02】你是如何理解 HTML 语义化的,有什么好处
[02]你是如何理解 HTML 语义化的 01,语义化,就是通过HTML标签来表示页面包含的信息. 02,其中有HTML标签的语义化和CSS命名的语义化. 03,HTML标签语义化的的含义是: ...
- strcat strcpy 源代码,用指针去实现
15. 指针实现 strcmp函数 • int newStrcpy(char *p, char *q) • { • while(*p ==*q) { ...
- 请编写一个方法,返回某集合的所有非空子集。 给定一个int数组A和数组的大小int n,请返回A的所有非空子集。保证A的元素个数小于等于20,且元素互异。各子集内部从大到小排序,子集之间字典逆序排序,见样例。
题解:观察测试样例,会发现每个子集的选择规律与二进制((2^n) - 1)到 1 的顺序生成的规律是一致的,样例中n=3,2^n-1=7,用二进制表示为111,其中每一位的1表示数组中的三个数都选择. ...
- [jenkins学习篇] 安装jenkins
1 下载war包,https://jenkins.io/download/ 2 安装jar包,java -jar jenkins.war 3 打开网址:http://localhost:8080 4 ...
- Azure Storage Blob文件重命名
Azure Storage的SDK并没有提供文件重命名的方法,而且从StorageExplorer管理工具里操作修改文件名的时候也有明确提示: 是通过复制当前文件并命名为新文件名再删除旧文件,不保存快 ...
- shell的case-esac
case ... esac 与其他语言中的 switch ... case 语句类似,是一种多分枝选择结构. case 语句匹配一个值或一个模式,如果匹配成功,执行相匹配的命令.case语句格式如下: ...
- 【Luogu】P1231教辅的组成(拆点+Dinic+当前弧优化)
题目链接 妈耶 我的图建反了两次 准确的说是有两个地方建反了,然后反上加反改了一个小时…… 知道为什么要拆点吗? 假设这是你的图 左边到右边依次是超级源点 练习册 书 答案 ...
- 【Luogu】P1306斐波那契公约数(递推)
题目链接 有个定理叫gcd(f(n),f(m))=f(gcd(n,m)) 所以递推就好了. #include<cstdio> #include<cstdlib> #includ ...