PostgreSQL 运算符
WHERE 子句中的运算符
我们可以在 WHERE 子句中使用不同的运算符:
= | 等于 |
---|---|
< | 小于 |
> | 大于 |
<= | 小于等于 |
>= | 大于等于 |
<> | 不等于 |
!= | 不等于 |
LIKE | 检查值是否与模式匹配(区分大小写) |
ILIKE | 检查值是否与模式匹配(不区分大小写) |
AND | 逻辑与 |
OR | 逻辑或 |
IN | 检查一个值是否在一个区间值之内 |
BETWEEN | 检查一个值是否在一个区间值之内 |
IS NULL | 检查一个值是否为空 |
NOT | 得出反面结果,比如 NOT LIKE, NOT IN, NOT BETWEEN |
等于
当您希望返回列等于指定值的所有记录时,将使用 =
运算符:
实例
返回品牌为 'Volvo' 的所有记录:
SELECT * FROM cars
WHERE brand = 'Volvo';
小于
当您希望返回列小于指定值的所有记录时,将使用运算符 <
。
实例
返回年份小于 1975 年的所有记录:
SELECT * FROM cars
WHERE model < 1975;
大于
当您希望返回列数大于指定值的所有记录时,将使用运算符 >
。
实例
返回年份大于 1975 的所有记录:
SELECT * FROM cars
WHERE model > 1975;
小于等于
当您希望返回列小于或等于指定值的所有记录时,将使用运算符 <=
。
实例
返回年份小于或等于 1975 年的所有记录:
SELECT * FROM cars
WHERE model <= 1975;
大于等于
当您希望返回列大于或等于指定值的所有记录时,将使用运算符 >=
。
实例
返回年份大于或等于 1975 的所有记录:
SELECT * FROM cars
WHERE model >= 1975;
不等于
当您希望返回列不等于指定值的所有记录时,将使用运算符 <>
:
实例
返回品牌不是 'Volvo' 的所有记录:
SELECT * FROM cars
WHERE brand <> 'Volvo';
您也可以使用 !=
运算符得到同样得结果:
实例
返回品牌不是 'Volvo' 的所有记录:
SELECT * FROM cars
WHERE brand != 'Volvo';
LIKE
当您希望返回列等于指定模式的所有记录时,将使用 LIKE
运算符。
模式可以是像 'Volvo' 这样的绝对值,也可以是具有特殊含义的通配符。
有两个通配符经常与 LIKE
运算符一起使用:
- 百分号
%
表示零个、一个或多个字符。 - 下划线符号
_
表示一个字符。
实例
返回以大写 'M' 开头的所有记录:
SELECT * FROM cars
WHERE model LIKE 'M%';
LIKE
运算符区分大小写。ILIKE
与 LIKE
运算符相同,但 ILIKE
不区分大小写。
实例
返回以大写 'M' 开头的所有记录:
SELECT * FROM cars
WHERE model ILIKE 'm%';
AND
当您想要检查多个条件时,将使用逻辑 AND
运算符:
实例
返回品牌为 'Volvo' 且年份为 1968 年的所有记录:
SELECT * FROM cars
WHERE brand = 'Volvo' AND year = 1968;
OR
当您可以接受许多条件中只有一个为 true 时,将使用逻辑 OR
运算符:
实例
返回品牌为 'Volvo' 或年份为 1975 年的所有记录:
SELECT * FROM cars
WHERE brand = 'Volvo' OR year = 1975;
IN
当列的值与列表中的任何值匹配时,使用 IN
运算符:
实例
返回此列表中品牌所在的所有记录:
SELECT * FROM cars
WHERE brand IN ('Volvo', 'Mercedes', 'Ford');
BETWEEN
BETWEEN
运算符用于检查列的值是否在指定的值范围之间:
实例
返回年份在 1970 年到 1980 年之间的所有记录:
SELECT * FROM cars
WHERE year BETWEEN 1970 AND 1980;
BETWEEN
运算符包括 from
和 to
值,这意味着在上面的例子中,结果也包括 1970 年和 1980 年制造的汽车。
IS NULL
IS NULL
运算符用于检查列的值是否为 NULL:
实例
返回模型为 NULL 的所有记录:
SELECT * FROM cars
WHERE model IS NULL;
NOT
NOT
运算符可以与 LIKE
, ILIKE
, IN
, BETWEEN
, 和 NULL
运算符一起使用,以反转运算符的 true 值。
实例: NOT LIKE
返回品牌不是以大写 'B' 开头的所有记录(区分大小写):
SELECT * FROM cars
WHERE brand
NOT LIKE 'B%';
实例: NOT ILIKE
返回品牌不是以 'b' 开头的所有记录(不区分大小写):
SELECT * FROM cars
WHERE brand
NOT ILIKE 'b%';
实例: NOT IN
返回该品牌不在此列表中的所有记录:('Volvo', 'Mercedes', 'Ford'):
SELECT * FROM cars
WHERE brand NOT IN ('Volvo', 'Mercedes', 'Ford');
实例: NOT BETWEEN
返回年份不在 1970 年到 1980 年之间的所有记录:
SELECT * FROM cars
WHERE year NOT BETWEEN 1970 AND 1980;
NOT BETWEEN
运算符排除了 from
和 to
值,这意味着在上面的例子中,结果不包括 1970 年和 1980 年制造的汽车。
实例: IS NOT NULL
返回模型不为空的所有记录
SELECT * FROM cars
WHERE model IS NOT NULL;
cars
表并没有 NULL 值的列,所以上面的示例将返回所有 4 行。