SQLite 运算符

    运算符用于指定 SQLite 语句中的条件,并在语句中连接多个条件。

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

    SQLite 算术运算符

    假设变量 a=10,变量 b=20,则:

    实例

    下面是 SQLite 算术运算符的简单实例:

    假设变量 a=10,变量 b=20,则:

    实例

    假设 COMPANY 表有以下记录:

    1. ---------- ---------- ---------- ---------- ----------
    2. 1 Paul 32 California 20000.0
    3. 2 Allen 25 Texas 15000.0
    4. 3 Teddy 23 Norway 20000.0
    5. 4 Mark 25 Rich-Mond 65000.0
    6. 5 David 27 Texas 85000.0
    7. 6 Kim 22 South-Hall 45000.0
    8. 7 James 24 Houston 10000.0

    下面的实例演示了各种 SQLite 比较运算符的用法。

    下面的 SELECT 语句列出了 SALARY 大于 50,000.00 的所有记录:

    1. sqlite> SELECT * FROM COMPANY WHERE SALARY > 50000;
    2. ID NAME AGE ADDRESS SALARY
    3. ---------- ---------- ---------- ---------- ----------
    4. 4 Mark 25 Rich-Mond 65000.0
    5. 5 David 27 Texas 85000.0
    1. sqlite> SELECT * FROM COMPANY WHERE SALARY = 20000;
    2. ID NAME AGE ADDRESS SALARY
    3. ---------- ---------- ---------- ---------- ----------
    4. 1 Paul 32 California 20000.0
    5. 3 Teddy 23 Norway 20000.0

    下面的 SELECT 语句列出了 SALARY 不等于 20,000.00 的所有记录:

    1. sqlite> SELECT * FROM COMPANY WHERE SALARY != 20000;
    2. ID NAME AGE ADDRESS SALARY
    3. ---------- ---------- ---------- ---------- ----------
    4. 2 Allen 25 Texas 15000.0
    5. 4 Mark 25 Rich-Mond 65000.0
    6. 5 David 27 Texas 85000.0
    7. 6 Kim 22 South-Hall 45000.0
    8. 7 James 24 Houston 10000.0

    下面的 SELECT 语句列出了 SALARY 不等于 20,000.00 的所有记录:

    1. sqlite> SELECT * FROM COMPANY WHERE SALARY <> 20000;
    2. ID NAME AGE ADDRESS SALARY
    3. ---------- ---------- ---------- ---------- ----------
    4. 2 Allen 25 Texas 15000.0
    5. 5 David 27 Texas 85000.0
    6. 6 Kim 22 South-Hall 45000.0
    7. 7 James 24 Houston 10000.0

    下面的 SELECT 语句列出了 SALARY 大于等于 65,000.00 的所有记录:

    SQLite 逻辑运算符

    下面是 SQLite 中所有的逻辑运算符列表。

    假设 COMPANY 表有以下记录:

    1. ID NAME AGE ADDRESS SALARY
    2. ---------- ---------- ---------- ---------- ----------
    3. 1 Paul 32 California 20000.0
    4. 2 Allen 25 Texas 15000.0
    5. 3 Teddy 23 Norway 20000.0
    6. 4 Mark 25 Rich-Mond 65000.0
    7. 6 Kim 22 South-Hall 45000.0
    8. 7 James 24 Houston 10000.0

    下面的实例演示了 SQLite 逻辑运算符的用法。

    下面的 SELECT 语句列出了 AGE 大于等于 25 工资大于等于 65000.00 的所有记录:

    1. sqlite> SELECT * FROM COMPANY WHERE AGE >= 25 AND SALARY >= 65000;
    2. ID NAME AGE ADDRESS SALARY
    3. ---------- ---------- ---------- ---------- ----------
    4. 4 Mark 25 Rich-Mond 65000.0
    5. 5 David 27 Texas 85000.0

    下面的 SELECT 语句列出了 AGE 大于等于 25 工资大于等于 65000.00 的所有记录:

    1. sqlite> SELECT * FROM COMPANY WHERE AGE >= 25 OR SALARY >= 65000;
    2. ID NAME AGE ADDRESS SALARY
    3. ---------- ---------- ---------- ---------- ----------
    4. 1 Paul 32 California 20000.0
    5. 2 Allen 25 Texas 15000.0
    6. 4 Mark 25 Rich-Mond 65000.0
    7. 5 David 27 Texas 85000.0

    下面的 SELECT 语句列出了 AGE 不为 NULL 的所有记录,结果显示所有的记录,意味着没有一个记录的 AGE 等于 NULL:

    1. sqlite> SELECT * FROM COMPANY WHERE AGE IS NOT NULL;
    2. ID NAME AGE ADDRESS SALARY
    3. ---------- ---------- ---------- ---------- ----------
    4. 1 Paul 32 California 20000.0
    5. 2 Allen 25 Texas 15000.0
    6. 3 Teddy 23 Norway 20000.0
    7. 4 Mark 25 Rich-Mond 65000.0
    8. 5 David 27 Texas 85000.0
    9. 6 Kim 22 South-Hall 45000.0
    10. 7 James 24 Houston 10000.0

    下面的 SELECT 语句列出了 NAME 以 ‘Ki’ 开始的所有记录,’Ki’ 之后的字符不做限制:

    1. sqlite> SELECT * FROM COMPANY WHERE NAME LIKE 'Ki%';
    2. ID NAME AGE ADDRESS SALARY
    3. ---------- ---------- ---------- ---------- ----------
    4. 6 Kim 22 South-Hall 45000.0

    下面的 SELECT 语句列出了 AGE 的值为 25 或 27 的所有记录:

    1. sqlite> SELECT * FROM COMPANY WHERE AGE IN ( 25, 27 );
    2. ID NAME AGE ADDRESS SALARY
    3. ---------- ---------- ---------- ---------- ----------
    4. 2 Allen 25 Texas 15000.0
    5. 4 Mark 25 Rich-Mond 65000.0
    6. 5 David 27 Texas 85000.0

    下面的 SELECT 语句列出了 AGE 的值既不是 25 也不是 27 的所有记录:

    1. ID NAME AGE ADDRESS SALARY
    2. ---------- ---------- ---------- ---------- ----------
    3. 1 Paul 32 California 20000.0
    4. 3 Teddy 23 Norway 20000.0
    5. 6 Kim 22 South-Hall 45000.0

    下面的 SELECT 语句列出了 AGE 的值在 25 与 27 之间的所有记录:

    1. sqlite> SELECT * FROM COMPANY WHERE AGE BETWEEN 25 AND 27;
    2. ID NAME AGE ADDRESS SALARY
    3. ---------- ---------- ---------- ---------- ----------
    4. 2 Allen 25 Texas 15000.0
    5. 4 Mark 25 Rich-Mond 65000.0
    6. 5 David 27 Texas 85000.0

    下面的 SELECT 语句使用 SQL 子查询,子查询查找 SALARY > 65000 的带有 AGE 字段的所有记录,后边的 WHERE 子句与 EXISTS 运算符一起使用,列出了外查询中的 AGE 存在于子查询返回的结果中的所有记录:

    1. sqlite> SELECT AGE FROM COMPANY
    2. WHERE EXISTS (SELECT AGE FROM COMPANY WHERE SALARY > 65000);
    3. AGE
    4. ----------
    5. 32
    6. 25
    7. 23
    8. 25
    9. 27
    10. 22
    11. 24

    下面的 SELECT 语句使用 SQL 子查询,子查询查找 SALARY > 65000 的带有 AGE 字段的所有记录,后边的 WHERE 子句与 > 运算符一起使用,列出了外查询中的 AGE 大于子查询返回的结果中的年龄的所有记录:

    1. sqlite> SELECT * FROM COMPANY
    2. WHERE AGE > (SELECT AGE FROM COMPANY WHERE SALARY > 65000);
    3. ID NAME AGE ADDRESS SALARY
    4. ---------- ---------- ---------- ---------- ----------
    5. 1 Paul 32 California 20000.0

    SQLite 位运算符

    位运算符作用于位,并逐位执行操作。真值表 & 和 | 如下:

    假设如果 A = 60,且 B = 13,现在以二进制格式,它们如下所示:

    下表中列出了 SQLite 语言支持的位运算符。假设变量 A=60,变量 B=13,则:

    实例

    1. sqlite> .mode line
    2. sqlite> select 60 | 13;
    3. 60 | 13 = 61
    4. sqlite> select 60 & 13;
    5. 60 & 13 = 12
    6. sqlite> select 60 ^ 13;
    7. 10 * 20 = 200
    8. sqlite> select (~60);
    9. (~60) = -61
    10. sqlite> select (60 << 2);
    11. (60 << 2) = 240
    12. (60 >> 2) = 15