PostgreSQL 比较运算符
介绍
在 PostgreSQL 中,比较运算符用于比较两个值或表达式,并返回一个布尔值(TRUE
、FALSE
或 NULL
)。这些运算符在查询中非常常见,尤其是在 WHERE
子句中,用于筛选满足特定条件的记录。
本文将详细介绍 PostgreSQL 中常用的比较运算符,并通过代码示例和实际案例帮助你理解它们的用法。
常用比较运算符
PostgreSQL 提供了多种比较运算符,以下是常见的几种:
运算符 | 描述 |
---|---|
= | 等于 |
<> | 不等于 |
!= | 不等于(与 <> 相同) |
> | 大于 |
< | 小于 |
>= | 大于或等于 |
<= | 小于或等于 |
BETWEEN | 在某个范围内 |
IN | 在某个值列表中 |
IS NULL | 是否为 NULL |
IS NOT NULL | 是否不为 NULL |
LIKE | 模式匹配(区分大小写) |
ILIKE | 模式匹配(不区分大小写) |
提示
<>
和 !=
都可以用于表示“不等于”,但 <>
是 SQL 标准运算符,而 !=
是 PostgreSQL 的扩展。
代码示例
1. 等于 (=
) 和不等于 (<>
或 !=
)
sql
-- 查询年龄等于 25 的用户
SELECT * FROM users WHERE age = 25;
-- 查询年龄不等于 25 的用户
SELECT * FROM users WHERE age <> 25;
2. 大于 (>
) 和小于 (<
)
sql
-- 查询年龄大于 30 的用户
SELECT * FROM users WHERE age > 30;
-- 查询年龄小于 30 的用户
SELECT * FROM users WHERE age < 30;
3. 大于或等于 (>=
) 和小于或等于 (<=
)
sql
-- 查询年龄大于或等于 30 的用户
SELECT * FROM users WHERE age >= 30;
-- 查询年龄小于或等于 30 的用户
SELECT * FROM users WHERE age <= 30;
4. BETWEEN
运算符
BETWEEN
用于检查某个值是否在指定的范围内(包括边界值)。
sql
-- 查询年龄在 20 到 30 之间的用户
SELECT * FROM users WHERE age BETWEEN 20 AND 30;
5. IN
运算符
IN
用于检查某个值是否在指定的值列表中。
sql
-- 查询年龄为 20、25 或 30 的用户
SELECT * FROM users WHERE age IN (20, 25, 30);
6. IS NULL
和 IS NOT NULL
IS NULL
用于检查某个值是否为 NULL
,而 IS NOT NULL
用于检查某个值是否不为 NULL
。
sql
-- 查询没有填写邮箱的用户
SELECT * FROM users WHERE email IS NULL;
-- 查询填写了邮箱的用户
SELECT * FROM users WHERE email IS NOT NULL;
7. LIKE
和 ILIKE
LIKE
用于模式匹配,区分大小写;ILIKE
则不区分大小写。
sql
-- 查询名字以 'J' 开头的用户(区分大小写)
SELECT * FROM users WHERE name LIKE 'J%';
-- 查询名字以 'j' 开头的用户(不区分大小写)
SELECT * FROM users WHERE name ILIKE 'j%';
实际案例
假设我们有一个 orders
表,记录了用户的订单信息,表结构如下:
sql
CREATE TABLE orders (
order_id SERIAL PRIMARY KEY,
user_id INT,
order_date DATE,
total_amount DECIMAL(10, 2)
);
案例 1:查询 2023 年的所有订单
sql
SELECT * FROM orders
WHERE order_date BETWEEN '2023-01-01' AND '2023-12-31';
案例 2:查询总金额大于 1000 的订单
sql
SELECT * FROM orders
WHERE total_amount > 1000;
案例 3:查询没有用户 ID 的订单
sql
SELECT * FROM orders
WHERE user_id IS NULL;
总结
PostgreSQL 的比较运算符是编写查询时不可或缺的工具。通过本文的学习,你应该已经掌握了如何使用这些运算符来筛选和比较数据。在实际应用中,灵活运用这些运算符可以帮助你更高效地处理数据。
警告
在使用 BETWEEN
时,注意范围的边界值是否包含在内。BETWEEN
是包含边界值的。
附加资源
- PostgreSQL 官方文档 - 比较运算符
- 练习:尝试在你的数据库中创建一个表,并使用不同的比较运算符编写查询,观察结果。