SQLite 運(yùn)算符

2022-08-17 09:48 更新

SQLite 運(yùn)算符是什么?

運(yùn)算符是一個(gè)保留字或字符,主要用于 SQLite 語(yǔ)句的 WHERE 子句中執(zhí)行操作,如比較和算術(shù)運(yùn)算。

運(yùn)算符用于指定 SQLite 語(yǔ)句中的條件,并在語(yǔ)句中連接多個(gè)條件。

  • 算術(shù)運(yùn)算符

  • 比較運(yùn)算符

  • 邏輯運(yùn)算符

  • 位運(yùn)算符

SQLite 算術(shù)運(yùn)算符

假設(shè)變量 a=10,變量 b=20,則:

運(yùn)算符描述實(shí)例
+加法 - 把運(yùn)算符兩邊的值相加 a + b 將得到 30
-減法 - 左操作數(shù)減去右操作數(shù) a - b 將得到 -10
*乘法 - 把運(yùn)算符兩邊的值相乘 a * b 將得到 200
/除法 - 左操作數(shù)除以右操作數(shù) b / a 將得到 2
%取模 - 左操作數(shù)除以右操作數(shù)后得到的余數(shù) b % a will give 0

實(shí)例

下面是 SQLite 算術(shù)運(yùn)算符的簡(jiǎn)單實(shí)例:

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 比較運(yùn)算符

假設(shè)變量 a=10,變量 b=20,則:

運(yùn)算符描述實(shí)例
==檢查兩個(gè)操作數(shù)的值是否相等,如果相等則條件為真。 (a == b) 不為真。
=檢查兩個(gè)操作數(shù)的值是否相等,如果相等則條件為真。 (a = b) 不為真。
!=檢查兩個(gè)操作數(shù)的值是否相等,如果不相等則條件為真。 (a != b) 為真。
<>檢查兩個(gè)操作數(shù)的值是否相等,如果不相等則條件為真。 (a <> b) 為真。
>檢查左操作數(shù)的值是否大于右操作數(shù)的值,如果是則條件為真。 (a > b) 不為真。
<檢查左操作數(shù)的值是否小于右操作數(shù)的值,如果是則條件為真。 (a < b) 為真。
>=檢查左操作數(shù)的值是否大于等于右操作數(shù)的值,如果是則條件為真。 (a >= b) 不為真。
<=檢查左操作數(shù)的值是否小于等于右操作數(shù)的值,如果是則條件為真。 (a <= b) 為真。
!<檢查左操作數(shù)的值是否不小于右操作數(shù)的值,如果是則條件為真。 (a !< b) 為假。
!>檢查左操作數(shù)的值是否不大于右操作數(shù)的值,如果是則條件為真。 (a !> b) 為真。

實(shí)例

假設(shè) 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

下面的實(shí)例演示了各種 SQLite 比較運(yùn)算符的用法。

在這里,我們使用 WHERE 子句,這將會(huì)在后邊單獨(dú)的一個(gè)章節(jié)中講解,但現(xiàn)在您需要明白,WHERE 子句是用來(lái)設(shè)置 SELECT 語(yǔ)句的條件語(yǔ)句。

下面的 SELECT 語(yǔ)句列出了 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 語(yǔ)句列出了 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 語(yǔ)句列出了 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 語(yǔ)句列出了 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 語(yǔ)句列出了 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 邏輯運(yùn)算符

下面是 SQLite 中所有的邏輯運(yùn)算符列表。

運(yùn)算符描述
ANDAND 運(yùn)算符允許在一個(gè) SQL 語(yǔ)句的 WHERE 子句中的多個(gè)條件的存在。
BETWEENBETWEEN 運(yùn)算符用于在給定最小值和最大值范圍內(nèi)的一系列值中搜索值。
EXISTSEXISTS 運(yùn)算符用于在滿足一定條件的指定表中搜索行的存在。
ININ 運(yùn)算符用于把某個(gè)值與一系列指定列表的值進(jìn)行比較。
NOT ININ 運(yùn)算符的對(duì)立面,用于把某個(gè)值與不在一系列指定列表的值進(jìn)行比較。
LIKELIKE 運(yùn)算符用于把某個(gè)值與使用通配符運(yùn)算符的相似值進(jìn)行比較。
GLOBGLOB 運(yùn)算符用于把某個(gè)值與使用通配符運(yùn)算符的相似值進(jìn)行比較。GLOB 與 LIKE 不同之處在于,它是大小寫(xiě)敏感的。
NOTNOT 運(yùn)算符是所用的邏輯運(yùn)算符的對(duì)立面。比如 NOT EXISTS、NOT BETWEEN、NOT IN,等等。它是否定運(yùn)算符。
OROR 運(yùn)算符用于結(jié)合一個(gè) SQL 語(yǔ)句的 WHERE 子句中的多個(gè)條件。
IS NULLNULL 運(yùn)算符用于把某個(gè)值與 NULL 值進(jìn)行比較。
ISIS 運(yùn)算符與 = 相似。
IS NOTIS NOT 運(yùn)算符與 != 相似。
||連接兩個(gè)不同的字符串,得到一個(gè)新的字符串。
UNIQUEUNIQUE 運(yùn)算符搜索指定表中的每一行,確保唯一性(無(wú)重復(fù))。

實(shí)例

假設(shè) 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

下面的實(shí)例演示了 SQLite 邏輯運(yùn)算符的用法。

下面的 SELECT 語(yǔ)句列出了 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 語(yǔ)句列出了 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 語(yǔ)句列出了 AGE 不為 NULL 的所有記錄,結(jié)果顯示所有的記錄,意味著沒(méi)有一個(gè)記錄的 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 語(yǔ)句列出了 NAME 以 'Ki' 開(kāi)始的所有記錄,'Ki' 之后的字符不做限制:

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

下面的 SELECT 語(yǔ)句列出了 NAME 以 'Ki' 開(kāi)始的所有記錄,'Ki' 之后的字符不做限制:

sqlite> SELECT * FROM COMPANY WHERE NAME GLOB 'Ki*';
ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
6           Kim         22          South-Hall  45000.0

下面的 SELECT 語(yǔ)句列出了 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 語(yǔ)句列出了 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 語(yǔ)句列出了 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 語(yǔ)句使用 SQL 子查詢,子查詢查找 SALARY > 65000 的帶有 AGE 字段的所有記錄,后邊的 WHERE 子句與 EXISTS 運(yùn)算符一起使用,列出了外查詢中的 AGE 存在于子查詢返回的結(jié)果中的所有記錄:

sqlite> SELECT AGE FROM COMPANY 
        WHERE EXISTS (SELECT AGE FROM COMPANY WHERE SALARY > 65000);
AGE
----------
32
25
23
25
27
22
24

下面的 SELECT 語(yǔ)句使用 SQL 子查詢,子查詢查找 SALARY > 65000 的帶有 AGE 字段的所有記錄,后邊的 WHERE 子句與 > 運(yùn)算符一起使用,列出了外查詢中的 AGE 大于子查詢返回的結(jié)果中的年齡的所有記錄:

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 位運(yùn)算符

位運(yùn)算符作用于位,并逐位執(zhí)行操作。真值表 & 和 | 如下:

pqp & qp | q
0000
0101
1111
1001

假設(shè)如果 A = 60,且 B = 13,現(xiàn)在以二進(jìn)制格式,它們?nèi)缦滤荆?/p>

A = 0011 1100

B = 0000 1101

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

A&B = 0000 1100

A|B = 0011 1101

~A  = 1100 0011

下表中列出了 SQLite 語(yǔ)言支持的位運(yùn)算符。假設(shè)變量 A=60,變量 B=13,則:

運(yùn)算符描述實(shí)例
&如果同時(shí)存在于兩個(gè)操作數(shù)中,二進(jìn)制 AND 運(yùn)算符復(fù)制一位到結(jié)果中。 (A & B) 將得到 12,即為 0000 1100
|如果存在于任一操作數(shù)中,二進(jìn)制 OR 運(yùn)算符復(fù)制一位到結(jié)果中。 (A | B) 將得到 61,即為 0011 1101
~二進(jìn)制補(bǔ)碼運(yùn)算符是一元運(yùn)算符,具有"翻轉(zhuǎn)"位效應(yīng)。 (~A ) 將得到 -61,即為 1100 0011,2 的補(bǔ)碼形式,帶符號(hào)的二進(jìn)制數(shù)。
<<二進(jìn)制左移運(yùn)算符。左操作數(shù)的值向左移動(dòng)右操作數(shù)指定的位數(shù)。 A << 2 將得到 240,即為 1111 0000
>> 二進(jìn)制右移運(yùn)算符。左操作數(shù)的值向右移動(dòng)右操作數(shù)指定的位數(shù)。 A >> 2 將得到 15,即為 0000 1111

實(shí)例

下面的實(shí)例演示了 SQLite 位運(yùn)算符的用法:

sqlite> .mode line
sqlite> select 60 | 13;
60 | 13 = 61

sqlite> select 60 & 13;
60 & 13 = 12

sqlite> select  60 ^ 13;
10 * 20 = 200


sqlite>  select  (~60);
(~60) = -61

sqlite>  select  (60 << 2); (60 << 2) = 240  sqlite>  select  (60 >> 2);
(60 >> 2) = 15


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)