SQL查询过滤Where子句用法

数据大师
数据大师
数据大师
294
文章
0
评论
2021-08-1214:16:41 评论 895 1481字
摘要

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

 

一、条件连接符

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"

 

二、条件类型

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

SQL查询过滤Where子句用法

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开头的员工姓名

 

三、NULL条件

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

SQL查询过滤Where子句用法

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

SQL查询过滤Where子句用法

如果值中包括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

SQL查询过滤Where子句用法

SELECT emp_id, fname, lname, superior_emp_id

FROM employee

WHERE superior_emp_id != 6 OR superior_emp_id IS NULL;

SQL查询过滤Where子句用法

End.

作者:毛飞龙

本文为转载分享,如果涉及作品、版权和其他问题,请联系我们第一时间删除(微信号:lovedata0520

更多文章前往首页浏览http://www.itongji.cn/

 

  • 我的微信公众号
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: