SQLite使用教程10 運算子

來源:互聯網
上載者:User

標籤:

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 linesqlite> select 10 + 20;10 + 20 = 30sqlite> select 10 - 20;10 - 20 = -10sqlite> select 10 * 20;10 * 20 = 200sqlite> select 10 / 5;10 / 5 = 2sqlite> 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) 為真。
!< 檢查左運算元的值是否不小於右運算元的值,如果是則條件為真。 (a !< b) 為假。
!> 檢查左運算元的值是否不大於右運算元的值,如果是則條件為真。 (a !> b) 為真。
執行個體

假設 COMPANY 表有以下記錄:

ID          NAME        AGE         ADDRESS     SALARY----------  ----------  ----------  ----------  ----------1           Paul        32          California  20000.02           Allen       25          Texas       15000.03           Teddy       23          Norway      20000.04           Mark        25          Rich-Mond   65000.05           David       27          Texas       85000.06           Kim         22          South-Hall  45000.07           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.05           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.03           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.04           Mark        25          Rich-Mond   65000.05           David       27          Texas       85000.06           Kim         22          South-Hall  45000.07           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.04           Mark        25          Rich-Mond   65000.05           David       27          Texas       85000.06           Kim         22          South-Hall  45000.07           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.05           David       27          Texas       85000.0

  

SQLite 邏輯運算子

下面是 SQLite 中所有的邏輯運算子列表。

運算子 描述
AND AND 運算子允許在一個 SQL 陳述式的 WHERE 子句中的多個條件的存在。
BETWEEN BETWEEN 運算子用於在給定最小值和最大值範圍內的一系列值中搜尋值。
EXISTS EXISTS 運算子用於在滿足一定條件的指定表中搜尋行的存在。
IN IN 運算子用於把某個值與一系列指定列表的值進行比較。
NOT IN IN 運算子的對立面,用於把某個值與不在一系列指定列表的值進行比較。
LIKE LIKE 運算子用於把某個值與使用萬用字元運算子的相似值進行比較。
GLOB GLOB 運算子用於把某個值與使用萬用字元運算子的相似值進行比較。GLOB 與 LIKE 不同之處在於,它是大小寫敏感的。
NOT NOT 運算子是所用的邏輯運算子的對立面。比如 NOT EXISTS、NOT BETWEEN、NOT IN,等等。它是否定運算子。
OR OR 運算子用於結合一個 SQL 陳述式的 WHERE 子句中的多個條件。
IS NULL NULL 運算子用於把某個值與 NULL 值進行比較。
IS IS 運算子與 = 相似。
IS NOT IS NOT 運算子與 != 相似。
|| 串連兩個不同的字串,得到一個新的字串。
UNIQUE UNIQUE 運算子搜尋指定表中的每一行,確保唯一性(無重複)。
執行個體

假設 COMPANY 表有以下記錄:

ID          NAME        AGE         ADDRESS     SALARY----------  ----------  ----------  ----------  ----------1           Paul        32          California  20000.02           Allen       25          Texas       15000.03           Teddy       23          Norway      20000.04           Mark        25          Rich-Mond   65000.05           David       27          Texas       85000.06           Kim         22          South-Hall  45000.07           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.05           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.02           Allen       25          Texas       15000.04           Mark        25          Rich-Mond   65000.05           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.02           Allen       25          Texas       15000.03           Teddy       23          Norway      20000.04           Mark        25          Rich-Mond   65000.05           David       27          Texas       85000.06           Kim         22          South-Hall  45000.07           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.04           Mark        25          Rich-Mond   65000.05           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.03           Teddy       23          Norway      20000.06           Kim         22          South-Hall  45000.07           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.04           Mark        25          Rich-Mond   65000.05           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----------32252325272224

  下面的 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 位元運算符

位元運算符作用於位,並逐位執行操作。真值表 & 和 | 如下:

p q p & q p | q
0 0 0 0
0 1 0 1
1 1 1 1
1 0 0 1

假設如果 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
~ 二進位補碼運算子是一元運算子,具有"翻轉"位效應。 (~A ) 將得到 -61,即為 1100 0011,2 的補碼形式,帶符號的位元。
<< 二進位左移運算子。左運算元的值向左移動右運算元指定的位元。 A << 2 將得到 240,即為 1111 0000
>> 二進位右移運算子。左運算元的值向右移動右運算元指定的位元。 A >> 2 將得到 15,即為 0000 1111
執行個體

下面的執行個體示範了 SQLite 位元運算符的用法:

sqlite> .mode linesqlite> select 60 | 13;60 | 13 = 61sqlite> select 60 & 13;60 & 13 = 12sqlite> select  60 ^ 13;10 * 20 = 200sqlite>  select  (~60);(~60) = -61sqlite>  select  (60 << 2);(60 << 2) = 240sqlite>  select  (60 >> 2);(60 >> 2) = 15

  

SQLite使用教程10 運算子

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.