SQLite 的运算符用于在 WHERE 子句、表达式或其他 SQL 语句中进行条件判断、计算或比较。以下按类型分类详解:
1. 算术运算符
用于数值计算。
| 运算符 | 说明 | 示例 | 结果 |
|---|---|---|---|
+ | 加法 | 5 + 3 | 8 |
- | 减法 | 10 - 4 | 6 |
* | 乘法 | 3 * 4 | 12 |
/ | 除法(整数除法向下取整) | 10 / 3 | 3 |
% | 取模(余数) | 10 % 3 | 1 |
提示:除法结果为整数,若需浮点数,使用
CAST(10 AS REAL)/3。
2. 比较运算符
用于条件比较,返回 TRUE(1)、FALSE(0)或 NULL。
| 运算符 | 说明 | 示例 |
|---|---|---|
= | 等于 | age = 25 |
== | 等同于 = | (不推荐) |
!= 或 <> | 不等于 | age != 30 |
> | 大于 | salary > 5000 |
< | 小于 | id < 10 |
>= | 大于等于 | score >= 90 |
<= | 小于等于 | price <= 100 |
IS | 精确比较(包括 NULL) | value IS NULL |
IS NOT | 不等于(包括 NULL) | value IS NOT NULL |
3. 逻辑运算符
组合多个条件。
| 运算符 | 说明 | 示例 |
|---|---|---|
AND | 且 | age > 18 AND country = 'SG' |
OR | 或 | status = 'active' OR status = 'new' |
NOT | 非 | NOT deleted |
优先级:
NOT>AND>OR,建议使用括号明确逻辑。
4. 字符串运算符
用于文本匹配和拼接。
| 运算符 | 说明 | 示例 |
|---|---|---|
|| | 字符串拼接 | 'Hello' || ' ' || 'World' → 'Hello World' |
LIKE | 模式匹配 | name LIKE '张%'(以“张”开头) |
GLOB | 类似 LIKE,但区分大小写,使用 * 和 ? | file GLOB '*.txt' |
MATCH | 全文搜索(FTS 表专用) | (需 FTS3/FTS5 扩展) |
REGEXP | 正则表达式匹配(需启用) | email REGEXP '^[a-z]+@'(需自定义函数) |
LIKE 通配符:
%:匹配任意长度字符_:匹配单个字符
-- 查找名字包含“三”的用户
SELECT * FROM users WHERE name LIKE '%三%';
5. 位运算符
对整数进行位操作。
| 运算符 | 说明 | 示例 | 结果(十进制) |
|---|---|---|---|
& | 按位与 | 5 & 3 | 1 (0101 & 0011) |
| | 按位或 | 5 | 3 | 7 (0101 | 0011) |
~ | 按位取反 | ~5 | 取决于整数类型 |
<< | 左移 | 1 << 2 | 4 |
>> | 右移 | 8 >> 1 | 4 |
6. NULL 判断运算符
专用于处理 NULL 值。
-- 查找 email 为空的记录
SELECT * FROM users WHERE email IS NULL;
-- 查找 email 不为空
SELECT * FROM users WHERE email IS NOT NULL;
注意:
email = NULL永远返回NULL(不是 true),必须用IS NULL。
7. IN、BETWEEN、EXISTS
常视为“条件运算符”。
-- IN:值在列表中
WHERE country IN ('SG', 'MY', 'ID')
-- BETWEEN:范围(包含边界)
WHERE age BETWEEN 20 AND 30
-- EXISTS:子查询存在结果
WHERE EXISTS (SELECT 1 FROM orders WHERE user_id = users.id)
8. CASE 条件表达式(类似运算符)
SELECT name,
CASE
WHEN age < 18 THEN '未成年'
WHEN age < 65 THEN '成年'
ELSE '老年'
END AS age_group
FROM users;
总结表格
| 类型 | 运算符示例 |
|---|---|
| 算术 | + - * / % |
| 比较 | = != > < >= <= IS IS NOT |
| 逻辑 | AND OR NOT |
| 字符串 | || LIKE GLOB |
| 位运算 | & | ~ << >> |
| 其他 | IN BETWEEN EXISTS CASE |
需要结合你的表结构写查询示例吗?请提供 CREATE TABLE 语句!