PostgreSQL 运算符
WHERE 子句中的运算符
我们可以在 WHERE 子句中使用不同的运算符:
= |
等于 |
< |
小于。 |
> |
大于。 |
<= |
小于或等于。 |
>= |
大于或等于。 |
<> |
不等于。 |
!= |
不等于。 |
LIKE |
检查某个值是否与模式匹配(区分大小写)。 |
ILIKE |
检查某个值是否与模式匹配(不区分大小写)。 |
AND |
逻辑与。 |
OR |
逻辑或。 |
IN |
检查某个值是否在一系列值之间。 |
BETWEEN |
检查某个值是否在一系列值之间。 |
IS NULL |
检查某个值是否为 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
当您可以接受多个条件中只有一个为真时,使用逻辑 OR 运算符:
实例
返回品牌为 'Volvo' 或年份为 1975 的所有记录:
SELECT * FROM cars WHERE brand = 'Volvo' OR year = 1975;
IN
当列的值与列表中的任何值匹配时,使用 IN 运算符:
实例
返回品牌在此列表中的所有记录:('Volvo', 'Mercedes', 'Ford'):
SELECT * FROM cars
WHERE brand IN ('Volvo', 'Mercedes', 'Ford');
BETWEEN
BETWEEN 运算符用于检查列的值是否在指定的值范围内:
实例
返回年份在 1970 到 1980 之间的所有记录:
SELECT * FROM cars WHERE year BETWEEN 1970 AND 1980;
BETWEEN 运算符包括起始值和结束值,这意味着在上面的示例中,结果还包括 1970 年和 1980 年制造的汽车。
IS NULL
IS NULL 运算符用于检查列的值是否为 NULL:
实例
返回模型为 NULL 的所有记录:
SELECT * FROM cars WHERE model IS NULL;
NOT
NOT 操作符可以与 LIKE、ILIKE、IN、BETWEEN 和 NULL 操作符一起使用,以反转操作符的值。
实例: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 操作符排除了起始值和终止值,这意味着在上述示例中,结果将不包括 1970 年和 1980 年制造的汽车。
实例:IS NOT NULL
返回模型不为空的所有记录:
SELECT * FROM cars WHERE model IS NOT NULL;
cars 表没有包含 NULL 值的列,因此上面的示例将返回所有 4 行。