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