描述
WHERE 子句用于根据提供的谓词过滤 FROM 子句的结果。支持比较运算符、逻辑运算符、IS [NOT] NULL、LIKE、BETWEEN、IN 等谓词。谓词类别 | 常用形式 | 说明 |
比较运算符 | =、<> / !=、<、<=、>、>= | 对两个表达式按数值/字符串/日期等大小关系进行比较,返回布尔值 |
逻辑运算符 | AND、OR、NOT | 组合或取反多个布尔条件,遵循 NOT > AND > OR 的优先级,可用括号显式分组 |
IS [NOT] NULL | col IS NULL / col IS NOT NULL | 判断列值是否为 NULL;NULL 不能用 = 或 <> 比较,必须使用本谓词 |
LIKE | col [NOT] LIKE 'pattern' | 按模式匹配字符串, % 匹配任意长度字符,_ 匹配单个字符 |
BETWEEN | col [NOT] BETWEEN a AND b | 判断值是否落在闭区间 [a, b] 内,等价于 col >= a AND col <= b |
IN | col [NOT] IN (v1, v2, …) 或 IN (subquery) | 判断值是否属于给定值列表或子查询结果集,等价于多个 OR 条件的简写 |
语法
WHERE boolean_expression
参数
子句/关键字 | 说明 |
boolean_expression | 指定任何计算结果为布尔类型的表达式。可以使用逻辑运算符( AND、OR)组合两个或多个表达式 |
示例
-- WHERE > (比较)SELECT * FROM VALUES (1,'a'),(2,'b'),(3,'c') AS t(id,name) WHERE id > 1-- WHERE IS NOT NULLSELECT * FROM VALUES (1,'a'),(2,NULL),(3,'c') AS t(id,name) WHERE name IS NOT NULL-- WHERE LIKESELECT * FROM VALUES (1,'Alice'),(2,'Bob') AS t(id,name) WHERE name LIKE 'A%'-- WHERE BETWEENSELECT * FROM VALUES (1,10),(2,20),(3,30) AS t(id,val) WHERE val BETWEEN 10 AND 20-- WHERE INSELECT * FROM VALUES (1),(2),(3),(4) AS t(id) WHERE id IN (1, 3)