Skip to content

SQLite - 运算符

运算符是主要用于 WHERE 子句中的保留字或字符,用于执行比较和算术等操作。运算符是用于在查询中过滤数据和创建复杂条件的基本组成部分。

SQLite 支持四种主要类型的运算符:

  • 算术运算符
  • 比较运算符
  • 逻辑运算符
  • 位运算符

这些运算符对数值执行数学计算。

运算符描述示例
+加法SELECT 10 + 5; 返回 15
-减法SELECT 10 - 5; 返回 5
*乘法SELECT 10 * 5; 返回 50
/除法SELECT 10 / 5; 返回 2
%取模(除法的余数)SELECT 10 % 3; 返回 1

这些运算符比较两个表达式并返回布尔值(true 或 false)。它们对 WHERE 子句至关重要。

运算符描述示例
= or ==等于。两者都是别名。... WHERE price = 100;
!= or <>不等于。两者都是别名。... WHERE status != 'shipped';
>大于... WHERE quantity > 50;
<小于... WHERE age < 18;
>=大于或等于... WHERE score >= 90;
<=小于或等于... WHERE discount <= 0.5;

这些运算符组合多个布尔条件以形成更复杂的过滤器。

运算符描述
AND如果所有条件都为真,则返回 true。... WHERE price < 100 AND in_stock = 1
OR如果任一条件为真,则返回 true。... WHERE country = 'USA' OR country = 'Canada'
NOT反转条件的结果。... WHERE NOT country = 'Germany'
BETWEEN检查值是否在某个范围内(包含边界)。... WHERE price BETWEEN 50 AND 100 等同于 price >= 50 AND price <= 100
IN检查值是否与列表中的任何值匹配。... WHERE status IN ('pending', 'processing')
LIKE使用通配符(% 表示任意字符序列,_ 表示单个字符)对字符串执行模式匹配。
GLOB类似于 LIKE,但使用 Unix 风格的通配符(* 表示任意序列,? 表示单个字符)并且区分大小写。
IS NULL检查值是否为 NULL。... WHERE shipping_date IS NULL
IS NOT NULL检查值是否不为 NULL。... WHERE shipping_date IS NOT NULL
EXISTS检查子查询中是否存在行。常用于高效的连接。
||字符串连接。SELECT 'Hello' || ' ' || 'World'; 返回 ‘Hello World’。注意:在标准 SQL 中,这表示逻辑或(OR)。

位运算符对整数值的单个位执行操作。它们用于专门的应用程序,例如操纵权限标志。

假设整数 A = 60(二进制 00111100)和 B = 13(二进制 00001101):

运算符描述示例
& (Bitwise AND)如果两个操作数中都为 1,则将位设置为 1。(A & B) 的结果是 12(二进制 00001100)
| (Bitwise OR)如果任一操作数中为 1,则将位设置为 1。(A | B) 的结果是 61(二进制 00111101)
~ (Bitwise NOT)反转操作数的所有位。(~A) 的结果是 -61,这是由于带符号整数的二进制补码表示。
<< (Left Shift)将位向左移动,右侧填充零。A << 2 的结果是 240(二进制 11110000)
>> (Right Shift)将位向右移动,丢弃右侧的位。A >> 2 的结果是 15(二进制 00001111)