程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Sqlite數據庫 >> Sqlite數據庫入門 >> SQLite 運算符

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) 為真。 !<檢查左操作數的值是否不小於右操作數的值,如果是則條件為真。 (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 將得到 240,即為 1111 0000 >> 二進制右移運算符。左操作數的值向右移動右操作數指定的位數。 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 ^ 13;
10 * 20 = 200


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

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

sqlite>  select  (60 >> 2);
(60 >> 2) = 15
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved