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当您想要返回列等于指定模式的所有记录时,请使用运算符。

该模式可以是绝对值(例如“Volvo”),也可以是具有特殊含义的通配符。

有两个通配符经常与 LIKE 运算符结合使用:

  • 百分号%, 代表零个、一个或多个字符。
  • 下划线符号_, 代表一个字符。

示例

返回模型以大写“M”开头的所有记录:

SELECT * FROM cars
WHERE model LIKE 'M%';
运行示例 »

这个LIKE运算符区分大小写。


我喜欢

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

示例

返回模型以“m”开头的所有记录:

SELECT * FROM cars
WHERE model ILIKE 'm%';
运行示例 »

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

示例

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

SELECT * FROM cars
WHERE brand = 'Volvo' AND year = 1968;
运行示例 »

或者

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

示例

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

SELECT * FROM cars
WHERE brand = 'Volvo' OR year = 1975;
运行示例 »

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

示例

返回此列表中存在该品牌的所有记录:(“Volvo”、“Mercedes”、“Ford”):

SELECT * FROM cars
WHERE brand IN ('Volvo', 'Mercedes', 'Ford');
运行示例 »

之间

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

示例

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

SELECT * FROM cars
WHERE year BETWEEN 1970 AND 1980;
运行示例 »

这个BETWEEN运算符包括fromto值,这意味着在上面的示例中,结果还包括 1970 年和 1980 年生产的汽车。


一片空白

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

示例

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

SELECT * FROM cars
WHERE model IS NULL;
运行示例 »

不是

这个NOT运算符可以与LIKE,ILIKE,IN,BETWEEN, 和NULL运算符来反转运算符的真相。

示例:不喜欢

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

SELECT * FROM cars
WHERE brand NOT LIKE 'B%';
运行示例 »

示例:不喜欢

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

SELECT * FROM cars
WHERE brand NOT ILIKE 'b%';
运行示例 »

示例:不在

返回该列表中不存在该品牌的所有记录:(“Volvo”、“Mercedes”、“Ford”):

SELECT * FROM cars
WHERE brand NOT IN ('Volvo', 'Mercedes', 'Ford');
运行示例 »

示例:不在之间

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

SELECT * FROM cars
WHERE year NOT BETWEEN 1970 AND 1980;
运行示例 »

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

示例:IS NOT NULL

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

SELECT * FROM cars
WHERE model IS NOT NULL;
运行示例 »

这个cars表没有包含 NULL 值的列,因此上面的示例将返回所有 4 行。


PostgreSQL 练习

通过练习测试一下

练习:

编写正确的SQL语句,选择该字段值所在的所有记录year小于 1970 年:

SELECT * FROM cars
WHERE ;
        

开始练习