PostgreSQL 运算符

WHERE 子句中的运算符

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

=等于
<小于
>大于
<=小于等于
>=大于等于
<>不等于
!=不等于
LIKE检查值是否与模式匹配(区分大小写)
ILIKE检查值是否与模式匹配(不区分大小写)
AND逻辑与
OR逻辑或
IN检查一个值是否在一个区间值之内
BETWEEN检查一个值是否在一个区间值之内
IS NULL检查一个值是否为空
NOT得出反面结果,比如 NOT LIKE, NOT IN, NOT BETWEEN

等于

当您希望返回列等于指定值的所有记录时,将使用 = 运算符:

实例

返回品牌为 'Volvo' 的所有记录:

  1. SELECT * FROM cars
  2. WHERE brand = 'Volvo';

小于

当您希望返回列小于指定值的所有记录时,将使用运算符 <

实例

返回年份小于 1975 年的所有记录:

  1. SELECT * FROM cars
  2. WHERE model < 1975;

大于

当您希望返回列数大于指定值的所有记录时,将使用运算符 >

实例

返回年份大于 1975 的所有记录:

  1. SELECT * FROM cars
  2. WHERE model > 1975;

小于等于

当您希望返回列小于或等于指定值的所有记录时,将使用运算符 <=

实例

返回年份小于或等于 1975 年的所有记录:

  1. SELECT * FROM cars
  2. WHERE model <= 1975;

大于等于

当您希望返回列大于或等于指定值的所有记录时,将使用运算符 >=

实例

返回年份大于或等于 1975 的所有记录:

  1. SELECT * FROM cars
  2. WHERE model >= 1975;

不等于

当您希望返回列不等于指定值的所有记录时,将使用运算符 <>:

实例

返回品牌不是 'Volvo' 的所有记录:

  1. SELECT * FROM cars
  2. WHERE brand <> 'Volvo';

您也可以使用 != 运算符得到同样得结果:

实例

返回品牌不是 'Volvo' 的所有记录:

  1. SELECT * FROM cars
  2. WHERE brand != 'Volvo';

LIKE

当您希望返回列等于指定模式的所有记录时,将使用 LIKE 运算符。

模式可以是像 'Volvo' 这样的绝对值,也可以是具有特殊含义的通配符。

有两个通配符经常与 LIKE 运算符一起使用:

  • 百分号 % 表示零个、一个或多个字符。
  • 下划线符号 _ 表示一个字符。
实例

返回以大写 'M' 开头的所有记录:

  1. SELECT * FROM cars
  2. WHERE model LIKE 'M%';
注意LIKE 运算符区分大小写。

ILIKE

LIKE 运算符相同,但 ILIKE 不区分大小写。

实例

返回以大写 'M' 开头的所有记录:

  1. SELECT * FROM cars
  2. WHERE model ILIKE 'm%';

AND

当您想要检查多个条件时,将使用逻辑 AND 运算符:

实例

返回品牌为 'Volvo' 且年份为 1968 年的所有记录:

  1. SELECT * FROM cars
  2. WHERE brand = 'Volvo' AND year = 1968;

OR

当您可以接受许多条件中只有一个为 true 时,将使用逻辑 OR 运算符:

实例

返回品牌为 'Volvo' 或年份为 1975 年的所有记录:

  1. SELECT * FROM cars
  2. WHERE brand = 'Volvo' OR year = 1975;

IN

当列的值与列表中的任何值匹配时,使用 IN 运算符:

实例

返回此列表中品牌所在的所有记录:

  1. SELECT * FROM cars
  2. WHERE brand IN ('Volvo', 'Mercedes', 'Ford');

BETWEEN

BETWEEN 运算符用于检查列的值是否在指定的值范围之间:

实例

返回年份在 1970 年到 1980 年之间的所有记录:

  1. SELECT * FROM cars
  2. WHERE year BETWEEN 1970 AND 1980;

BETWEEN 运算符包括 fromto 值,这意味着在上面的例子中,结果也包括 1970 年和 1980 年制造的汽车。


IS NULL

IS NULL 运算符用于检查列的值是否为 NULL:

实例

返回模型为 NULL 的所有记录:

  1. SELECT * FROM cars
  2. WHERE model IS NULL;

NOT

NOT 运算符可以与 LIKE, ILIKE, IN, BETWEEN, 和 NULL 运算符一起使用,以反转运算符的 true 值。

实例: NOT LIKE

返回品牌不是以大写 'B' 开头的所有记录(区分大小写):

  1. SELECT * FROM cars
  2. WHERE brand
  3. NOT LIKE 'B%';
实例: NOT ILIKE

返回品牌不是以 'b' 开头的所有记录(不区分大小写):

  1. SELECT * FROM cars
  2. WHERE brand
  3. NOT ILIKE 'b%';
实例: NOT IN

返回该品牌不在此列表中的所有记录:('Volvo', 'Mercedes', 'Ford'):

  1. SELECT * FROM cars
  2. WHERE brand NOT IN ('Volvo', 'Mercedes', 'Ford');
实例: NOT BETWEEN

返回年份不在 1970 年到 1980 年之间的所有记录:

  1. SELECT * FROM cars
  2. WHERE year NOT BETWEEN 1970 AND 1980;

NOT BETWEEN 运算符排除了 fromto 值,这意味着在上面的例子中,结果不包括 1970 年和 1980 年制造的汽车。

实例: IS NOT NULL

返回模型不为空的所有记录

  1. SELECT * FROM cars
  2. WHERE model IS NOT NULL;

cars 表并没有 NULL 值的列,所以上面的示例将返回所有 4 行。