WHERE

最近更新时间:2026-05-20 14:11:22

我的收藏

描述

WHERE 子句用于根据提供的谓词过滤 FROM 子句的结果。支持比较运算符、逻辑运算符、IS [NOT] NULLLIKEBETWEENIN 等谓词。
谓词类别
常用形式
说明
比较运算符
=<> / !=<<=>>=
对两个表达式按数值/字符串/日期等大小关系进行比较,返回布尔值
逻辑运算符
ANDORNOT
组合或取反多个布尔条件,遵循 NOT > AND > OR 的优先级,可用括号显式分组
IS [NOT] NULL
col IS NULL / col IS NOT NULL
判断列值是否为 NULLNULL 不能用 = <> 比较,必须使用本谓词
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
指定任何计算结果为布尔类型的表达式。可以使用逻辑运算符(ANDOR)组合两个或多个表达式

示例

-- WHERE > (比较)
SELECT * FROM VALUES (1,'a'),(2,'b'),(3,'c') AS t(id,name) WHERE id > 1

-- WHERE IS NOT NULL
SELECT * FROM VALUES (1,'a'),(2,NULL),(3,'c') AS t(id,name) WHERE name IS NOT NULL

-- WHERE LIKE
SELECT * 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 IN
SELECT * FROM VALUES (1),(2),(3),(4) AS t(id) WHERE id IN (1, 3)