PostgreSQL 运算符

WHERE 子句中的运算符

我们可以在 WHERE 子句中使用不同的运算符:

= 等于
< 小于。
> 大于。
<= 小于或等于。
>= 大于或等于。
<> 不等于。
!= 不等于。
LIKE 检查某个值是否与模式匹配(区分大小写)。
ILIKE 检查某个值是否与模式匹配(不区分大小写)。
AND 逻辑与。
OR 逻辑或。
IN 检查某个值是否在一系列值之间。
BETWEEN 检查某个值是否在一系列值之间。
IS NULL 检查某个值是否为 NULL。
NOT 产生负结果,例如 NOT LIKENOT INNOT 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 操作符可以与 LIKEILIKEINBETWEENNULL 操作符一起使用,以反转操作符的值。

实例: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 行。