大多数情况下,查询关注的是表中所有行的一个子集,需要用到Where过滤,本文主要介绍过滤的条件连接符(AND, OR, (),NOT),条件类型(相等条件、范围条件、成员条件、通配条件)以及当列名包含NULL值的注意事项。

1. 条件连接符

1)      AND:a AND b,选取要a和b都为真的数据子集

2)      OR:a OR b,选取要a或b都为真的数据子集

3)      ():当条件为3个或以上时,常常需要用到,比如 a AND (b OR c)

4)      NOT:NOT a,选区非a的数据子集,NOT 对开发者来说,增加了对条件评估的难度,一般尽量避免使用:

如:WHERE end_date IS NULL

AND NOT (title = 'Teller' OR start_date < '2007-01-01')

可转换为:WHERE end_date IS NULL

AND title != 'Teller' AND start_date > '2007-01-01'

2. 条件类型

1)      相等条件,操作符 =,!=,<>

2)      范围条件,操作符 >,<, between,例如:

SELECT emp_id, fname, lname, start_date

FROM employee

WHERE start_date < '2007-01-01';

WHERE start_date BETWEEN '2005-01-01' AND '2007-01-01';

使用BETWEEN是,跟这BETWEEN后的一定要是范围的下限,AND后接范围上限,否则会是空集,这是因为BETWEEN a AND b等价于a<=x<=b

3)      成员条件,操作符 IN, NOT IN, 例如:

SELECT account_id, product_cd, cust_id, avail_balance

FROM account

WHERE product_cd IN ('CHK','SAV','CD','MM');

IN 后面也可以接子查询,如:

SELECT account_id, product_cd, cust_id, avail_balance

FROM account

WHERE product_cd IN (SELECT product_cd FROM product

WHERE product_type_cd = 'ACCOUNT');

4)      匹配条件,通配符:"_"表示一个字符通配符,“%”表示任意个字符通配符,关键词LIKE

SELECT lname

FROM employee

WHERE lname LIKE '_a%e%'; #第二个字符为a,且后面有e字符

SELECT emp_id, fname, lname

FROM employee

WHERE lname LIKE 'F%' OR lname LIKE 'G%';  # 查找姓氏以F和G开头的员工姓名

3. NULL条件

注意:表达式为"IS NULL",不能写出"=NULL",两个NULL只也不能判断相等,如:

如果改成 = NULL, 则查询结果是空集但不会报错(不熟悉SQL常犯错误):

如果值中包括NULL, 则在使用"!="时要考虑到NULL值的数据,因为"!="只对有值的情况进行判断:

例如:查找上级ID不是6(Helen Fleming)的所有员工

SELECT emp_id, fname, lname, superior_emp_id

FROM employee

WHERE superior_emp_id != 6;

结果不包含superior_emp_id列为NULL的Michael Smith

SELECT emp_id, fname, lname, superior_emp_id

FROM employee

WHERE superior_emp_id != 6 OR superior_emp_id IS NULL;

SQL查询过滤Where子句用法相关推荐

  1. asp sql查询过滤空格_【技术干货】30个最适合初学者的SQL查询

    海牛学院的 | 第 598 期 本文预计阅读 | 11 分钟 毫无疑问,SQL或结构化查询语言是最流行的编程语言之一,尤其是因为它具有访问和修改数据库中数据的功能.SQL与数据库接口的基本用法是其流行 ...

  2. asp sql查询过滤空格_对比Excel,轻松学习SQL数据分析数据笔记02

    本文主要梳理<对比Excel,轻松学习SQL数据分析>对于自己有用的sql知识.这本书中的所有代码和函数均适用于my sql 8.0版本. SQL的基本功能数据定义(DDL)--对数据库, ...

  3. SQL学习笔记 where子句用法,like关键字 嵌套查询

    where子句 比较运算符: < , <= , > , >= , = , != , !< , !> .  text , ntext , image .型数据不可用. ...

  4. SQL查询cross join 的用法(笛卡尔积)

    [转自]http://www.cnblogs.com/chenxizhang/archive/2008/11/10/1330325.html CROSS JOIN又称为笛卡尔乘积,实际上是把两个表乘起 ...

  5. python 列表输入sql_将Python列表传递到SQL查询

    我正试图在访问表的字段中的项目中进行光标搜索.然后我将它们附加到一个名为"distList"的列表中.我要将列表传递到公式中的SQL查询生成器"WHERE"子句 ...

  6. oracle 索引概念、索引相关、sql查询执行计划

    文章目录 一.索引 1.1 索引概念 1.2 索引分类 1.3 位图索引(企业版oracle): 1.4 B树索引 (1) 唯一索引 (2) 组合索引 (3) 反向键索引 (4) 函数索引 1.5 和 ...

  7. sql两个表查不同数据_产品操作MySQL第6篇 – 数据过滤-WHERE子句

    MYSQL 本资料为产品岗位作为日常工作参考,语言口语化 At 2019/4/26 By David.Yang 如何使用限定条件来进行数据过滤? 在前问当中,我们已经学会到了SELECT查询, 在过程 ...

  8. mysql and 和where,关于mysql:连接sql查询中where和and子句的区别

    本问题已经有最佳答案,请猛点这里访问. 下面两个SQL查询有什么区别 和 号 根据以下两个测试结果 速度更快(237比460).据我所知,这是一个标准. . 氧化镁 不,有细微的差别,你不能说没有差别 ...

  9. (四)sql多表连接查询join on的用法

    (四)sql多表连接查询join on的用法总结 需要用到的表信息如下: EMP职员表: dept部门信息表和salgrade薪资等级表: 1. 多表连接 没有任何条件限制,即笛卡儿积,产生的记录数目 ...

最新文章

  1. stm32 基本定时器TIM6、TIM7的使用
  2. Sublime Text 3 MarkdownEditing布局设置
  3. 李雷和韩梅梅的一次转账事务–事务系统概述
  4. 使用native 查询时,对特殊字符的处理。
  5. 服务器显示AL024是什么意思,中牟县家具木工机械维修台达驱动器al024故障分分钟修复...
  6. ECharts - 嵌套环形图
  7. python 矩阵除法_Python线性代数学习笔记——矩阵的基本运算和基本性质,实现矩阵的基本运算...
  8. Java读带有BOM的UTF-8文件乱码原因及解决方法(转)
  9. Excel中的数组函数
  10. 学java编程语言_对于零基础的人而言 该如何学Java编程语言
  11. windos环境下安装face_recognition
  12. Eclipse添加GBK编码
  13. 用python代码制作视频
  14. 利用python在excel中画图
  15. 服务器被入侵怎么办,如何预防
  16. Weblogic安装时闪退,无法进行下一步问题
  17. 记录::Opencv调用tensorflow2.x-Keras模型
  18. 免费的PDF在线合并工具,拿走不谢!
  19. Linux网络配置(NAT)
  20. 炒鸡简单的javaScript的call和apply方法

热门文章

  1. 《机器学习》 周志华学习笔记第四章 决策树(课后习题)python 实现
  2. 127.0.0.1/dokuwiki/install.php,DokuWiki安装+集成markdown编辑器editor.md
  3. Taro 多端项目实践笔记
  4. angular项目打包发布流程
  5. jsp内置对象------session
  6. 读后感《我回阿里的29个月》
  7. 【JavaScriptjQuery】返回顶部
  8. SOA_环境安装系列1_Oracle SOA Suite11g安装总括(案例)
  9. 由胡润百富榜联想到的
  10. 用Syslog 记录UNIX和Windows日志的方法