一、描述
| 谓词类别 | 常用形式 | 说明 |
| 比较运算符 | =、<> / !=、<、<=、>、>= | 对两个表达式按数值/字符串/日期等大小关系进行比较,返回布尔值 |
| 逻辑运算符 | 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 BETWEEN SELECT * 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)