in sqlite 转换_SQLite 运算符

SQLite 运算符

SQLite 运算符是什么?

运算符是一个保留字或字符,主要用于 SQLite 语句的 WHERE 子句中执行操作,如比较和算术运算。

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

算术运算符

比较运算符

逻辑运算符

位运算符

SQLite 算术运算符

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

运算符描述实例

+加法 - 把运算符两边的值相加a + b 将得到 30

-减法 - 左操作数减去右操作数a - b 将得到 -10

*乘法 - 把运算符两边的值相乘a * b 将得到 200

/除法 - 左操作数除以右操作数b / a 将得到 2

%取模 - 左操作数除以右操作数后得到的余数b % a will give 0

实例

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

sqlite> .mode line

sqlite> select 10 + 20;

10 + 20 = 30

sqlite> select 10 - 20;

10 - 20 = -10

sqlite> select 10 * 20;

10 * 20 = 200

sqlite> select 10 / 5;

10 / 5 = 2

sqlite> select 12 % 5;

12 % 5 = 2

SQLite 比较运算符

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

运算符描述实例

==检查两个操作数的值是否相等,如果相等则条件为真。(a == b) 不为真。

=检查两个操作数的值是否相等,如果相等则条件为真。(a = b) 不为真。

!=检查两个操作数的值是否相等,如果不相等则条件为真。(a != b) 为真。

<>检查两个操作数的值是否相等,如果不相等则条件为真。(a <> b) 为真。

>检查左操作数的值是否大于右操作数的值,如果是则条件为真。(a > b) 不为真。

>=检查左操作数的值是否大于等于右操作数的值,如果是则条件为真。(a >= b) 不为真。

<=检查左操作数的值是否小于等于右操作数的值,如果是则条件为真。(a <= b) 为真。

!

!>检查左操作数的值是否不大于右操作数的值,如果是则条件为真。(a !> b) 为真。

实例

假设 COMPANY 表有以下记录:

ID NAME AGE ADDRESS SALARY

---------- ---------- ---------- ---------- ----------

1 Paul 32 California 20000.0

2 Allen 25 Texas 15000.0

3 Teddy 23 Norway 20000.0

4 Mark 25 Rich-Mond 65000.0

5 David 27 Texas 85000.0

6 Kim 22 South-Hall 45000.0

7 James 24 Houston 10000.0

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

在这里,我们使用 WHERE 子句,这将会在后边单独的一个章节中讲解,但现在您需要明白,WHERE 子句是用来设置 SELECT 语句的条件语句。

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

sqlite> SELECT * FROM COMPANY WHERE SALARY > 50000;

ID NAME AGE ADDRESS SALARY

---------- ---------- ---------- ---------- ----------

4 Mark 25 Rich-Mond 65000.0

5 David 27 Texas 85000.0

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

sqlite> SELECT * FROM COMPANY WHERE SALARY = 20000;

ID NAME AGE ADDRESS SALARY

---------- ---------- ---------- ---------- ----------

1 Paul 32 California 20000.0

3 Teddy 23 Norway 20000.0

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

sqlite> SELECT * FROM COMPANY WHERE SALARY != 20000;

ID NAME AGE ADDRESS SALARY

---------- ---------- ---------- ---------- ----------

2 Allen 25 Texas 15000.0

4 Mark 25 Rich-Mond 65000.0

5 David 27 Texas 85000.0

6 Kim 22 South-Hall 45000.0

7 James 24 Houston 10000.0

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

sqlite> SELECT * FROM COMPANY WHERE SALARY <> 20000;

ID NAME AGE ADDRESS SALARY

---------- ---------- ---------- ---------- ----------

2 Allen 25 Texas 15000.0

4 Mark 25 Rich-Mond 65000.0

5 David 27 Texas 85000.0

6 Kim 22 South-Hall 45000.0

7 James 24 Houston 10000.0

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

sqlite> SELECT * FROM COMPANY WHERE SALARY >= 65000;

ID NAME AGE ADDRESS SALARY

---------- ---------- ---------- ---------- ----------

4 Mark 25 Rich-Mond 65000.0

5 David 27 Texas 85000.0

SQLite 逻辑运算符

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

运算符描述

ANDAND 运算符允许在一个 SQL 语句的 WHERE 子句中的多个条件的存在。

BETWEENBETWEEN 运算符用于在给定最小值和最大值范围内的一系列值中搜索值。

EXISTSEXISTS 运算符用于在满足一定条件的指定表中搜索行的存在。

ININ 运算符用于把某个值与一系列指定列表的值进行比较。

NOT ININ 运算符的对立面,用于把某个值与不在一系列指定列表的值进行比较。

LIKELIKE 运算符用于把某个值与使用通配符运算符的相似值进行比较。

GLOBGLOB 运算符用于把某个值与使用通配符运算符的相似值进行比较。GLOB 与 LIKE 不同之处在于,它是大小写敏感的。

NOTNOT 运算符是所用的逻辑运算符的对立面。比如 NOT EXISTS、NOT BETWEEN、NOT IN,等等。它是否定运算符。

OROR 运算符用于结合一个 SQL 语句的 WHERE 子句中的多个条件。

IS NULLNULL 运算符用于把某个值与 NULL 值进行比较。

ISIS 运算符与 = 相似。

IS NOTIS NOT 运算符与 != 相似。

||连接两个不同的字符串,得到一个新的字符串。

UNIQUEUNIQUE 运算符搜索指定表中的每一行,确保唯一性(无重复)。

实例

假设 COMPANY 表有以下记录:

ID NAME AGE ADDRESS SALARY

---------- ---------- ---------- ---------- ----------

1 Paul 32 California 20000.0

2 Allen 25 Texas 15000.0

3 Teddy 23 Norway 20000.0

4 Mark 25 Rich-Mond 65000.0

5 David 27 Texas 85000.0

6 Kim 22 South-Hall 45000.0

7 James 24 Houston 10000.0

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

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

sqlite> SELECT * FROM COMPANY WHERE AGE >= 25 AND SALARY >= 65000;

ID NAME AGE ADDRESS SALARY

---------- ---------- ---------- ---------- ----------

4 Mark 25 Rich-Mond 65000.0

5 David 27 Texas 85000.0

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

sqlite> SELECT * FROM COMPANY WHERE AGE >= 25 OR SALARY >= 65000;

ID NAME AGE ADDRESS SALARY

---------- ---------- ---------- ---------- ----------

1 Paul 32 California 20000.0

2 Allen 25 Texas 15000.0

4 Mark 25 Rich-Mond 65000.0

5 David 27 Texas 85000.0

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

sqlite> SELECT * FROM COMPANY WHERE AGE IS NOT NULL;

ID NAME AGE ADDRESS SALARY

---------- ---------- ---------- ---------- ----------

1 Paul 32 California 20000.0

2 Allen 25 Texas 15000.0

3 Teddy 23 Norway 20000.0

4 Mark 25 Rich-Mond 65000.0

5 David 27 Texas 85000.0

6 Kim 22 South-Hall 45000.0

7 James 24 Houston 10000.0

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

sqlite> SELECT * FROM COMPANY WHERE NAME LIKE 'Ki%';

ID NAME AGE ADDRESS SALARY

---------- ---------- ---------- ---------- ----------

6 Kim 22 South-Hall 45000.0

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

sqlite> SELECT * FROM COMPANY WHERE NAME GLOB 'Ki*';

ID NAME AGE ADDRESS SALARY

---------- ---------- ---------- ---------- ----------

6 Kim 22 South-Hall 45000.0

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

sqlite> SELECT * FROM COMPANY WHERE AGE IN ( 25, 27 );

ID NAME AGE ADDRESS SALARY

---------- ---------- ---------- ---------- ----------

2 Allen 25 Texas 15000.0

4 Mark 25 Rich-Mond 65000.0

5 David 27 Texas 85000.0

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

sqlite> SELECT * FROM COMPANY WHERE AGE NOT IN ( 25, 27 );

ID NAME AGE ADDRESS SALARY

---------- ---------- ---------- ---------- ----------

1 Paul 32 California 20000.0

3 Teddy 23 Norway 20000.0

6 Kim 22 South-Hall 45000.0

7 James 24 Houston 10000.0

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

sqlite> SELECT * FROM COMPANY WHERE AGE BETWEEN 25 AND 27;

ID NAME AGE ADDRESS SALARY

---------- ---------- ---------- ---------- ----------

2 Allen 25 Texas 15000.0

4 Mark 25 Rich-Mond 65000.0

5 David 27 Texas 85000.0

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

sqlite> SELECT AGE FROM COMPANY

WHERE EXISTS (SELECT AGE FROM COMPANY WHERE SALARY > 65000);

AGE

----------

32

25

23

25

27

22

24

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

sqlite> SELECT * FROM COMPANY

WHERE AGE > (SELECT AGE FROM COMPANY WHERE SALARY > 65000);

ID NAME AGE ADDRESS SALARY

---------- ---------- ---------- ---------- ----------

1 Paul 32 California 20000.0

SQLite 位运算符

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

pqp & qp | q

0000

0101

1111

1001

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

A = 0011 1100

B = 0000 1101

-----------------

A&B = 0000 1100

A|B = 0011 1101

~A  = 1100 0011

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

运算符描述实例

&如果同时存在于两个操作数中,二进制 AND 运算符复制一位到结果中。(A & B) 将得到 12,即为 0000 1100

|如果存在于任一操作数中,二进制 OR 运算符复制一位到结果中。(A | B) 将得到 61,即为 0011 1101

~二进制补码运算符是一元运算符,具有"翻转"位效应,即0变成1,1变成0。(~A ) 将得到 -61,即为 1100 0011,一个有符号二进制数的补码形式。

<

>>二进制右移运算符。左操作数的值向右移动右操作数指定的位数。A >> 2 将得到 15,即为 0000 1111

实例

下面的实例演示了 SQLite 位运算符的用法:

sqlite> .mode line

sqlite> select 60 | 13;

60 | 13 = 61

sqlite> select 60 & 13;

60 & 13 = 12

sqlite> select (~60);

(~60) = -61

sqlite> select (60 << 2);

(60 << 2) = 240

sqlite> select (60 >> 2);

(60 >> 2) = 15

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值