運算子是一個保留字或字符,主要用於 SQLite 語句的 WHERE 子句中執行操作,如比較和算術運算。
運算子用於指定 SQLite 語句中的條件,並在語句中連接多個條件。
假設變數a=10,變數b=20,則:
#運算子 | 描述 | 實例 |
---|
#+ | 加法- 把運算符兩邊的值相加 | a + b 將得到30 |
#- | 減法- 左運算元減去右運算元 | a - b 將得到-10 |
* | 乘法- 把運算子兩邊的值相乘 | a * b 將得到200 |
/ | 除法- 左運算元除以右邊運算元 | b / a 將會得到2 |
% | 取模- 左運算元除以右運算元後所得的餘數 | b % a 將 give 0 |
實例
以下是SQLite 算術運算子的簡單實例:
sqlite> .mode line
sqlite> select 10 + 20;
10 + 20 = 30
sqlite> select 10 - 20;
10 - 20 = -10
sqlite> select 10;#* 20;##1 200
sqlite> select 10 / 5;
10 / 5 = 2
#sqlite> .
##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 ---- ---------- ---------- ----------
1 Paul 32 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 > AGE ADDRESS SALARY
---------- ---------- ---------- ---------- -------- --
4 Mark 25 ) 27 Texas 85000.0
#下列的SELECT 語句列出了SALARY 等於20,000.
##/
#sqlite> SELECT * FROM COMPANY WHERE SALARY = 20000;
ID NAME ALARY
---------- ---------- ------ ---- ---------- ----------
1 Paul 32 dy 23 Norway 20000.0
#
下面的SELECT 語句列出了SALARY 不等於20,000.00 的所有記錄:
sqlite> SELECT * FROM COMPANY WHERE SALARY != * FROM COMPANY WHERE SALARY != 2000909090000; 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 <>> 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 >= FROM COMPANY WHERE SALARY >= FROM COMPANY WHERE SALARY > AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ------- ---
4 Mark 25 27 Texas 85000.0
#############################》
下面是 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 ---- ---------- ---------- ----------
1 Paul 32 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 COMPAAGE WHERE > SELECT * FROM COMPAAGE WHERE > SELECT * FROM COMPAAGE WHERE ;= 25 AND SALARY >= 65000;
ID NAME ---------- ----------
4 Mark 25 David 27 在下的SELECT 語句列出了AGE 大於等於25
或
工資大於等於65000.00 的所有記錄:
sqlite> SELECT * FROM COMPANY WHERE AGE >= * FROM COMPANY WHERE AGE >= * FROM COMPARY WHERE AGE > 65000;ID NAME AGE 且且-------- --- ----------1 Paul 32 25 Texas 15000.0
#4 65000.0
5 David 27
下面的SELECT 語句列出了AGE 不為NULL 的所有記錄,結果顯示所有的記錄,表示沒有一個記錄的AGE 等於NULL:
sqlite> SELECT * FROM COMPANY WHERE AGE IS NOT NULL;
ID NAME AGE ------ ----------
1 Paul 32 25 Texas 15000.0
#3 20000.0
4 Mark 25
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) %';
ID NAME AGE ADDRESS ---- ----------
6 Kim 22 South-Hall 45000.0
下面的SELECT 語句列出了NAME 以'Ki' 開始的所有記錄, 'Ki' 之後的字元不做限制:
sqlite> SELECT * FROM COMPANY WHERE NAME GLOB 'Ki*';
ID ADDRESS SALARY
------ ---- ---------- ---------- ---------- ----------
6 Kim 22 South-Hall 45000.0
下面的SELECT 陳述式列出了AGE 的值為25 或27 的所有記錄:
sqlite> SELECT * FROM COMPANY W##sqlite> SELECT * FROM COMPANY W##sqlite&AGE 25, 27 );
ID NAME AGE ------ ----------
2 Allen 25 25 Rich-Mond 65000.0
5 85000.0
#
下面的SELECT 語句列出了AGE 的值既不是25 也不是27 的所有記錄:
sqlite> SELECT * FROM COMPANY WHERE AGE NOT IN ( FROM COMPANY WHERE AGE NOT IN, ( 255, 25);# #ID NAME AGE ADDRESS ---------
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 與27725 與27 之間的所有記錄:
sqlite> SELECT * FROM COMPANY WHERE AGE BETWE AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----- -----
2 Allen 25 Tex造成 25 Rich-Mond 65000.0
5 85000.0
##
下面的SELECT 語句使用SQL 子查詢,子查詢尋找SALARY > 65000 的所有關於AGE 欄位的記錄,後邊的WHERE 子句與EXISTS 運算子一起使用,列出了外查詢中的AGE 存在於子查詢回傳的結果中的所有記錄:
sqlite> SELECT AGE FROM COMPANY
WHERE EXISTS (SELECT#N1 ---------
32
25
23
25
27
22
24
下面的SELECT 語句使用SQL 子查詢,子查詢尋找SALARY > 65000 的所有帶有AGE 欄位的記錄,後邊的WHERE 子句與> 運算子一起使用,列出了外查詢中的AGE 大於子查詢傳回的結果中的年齡的所有記錄:
sqlite> SELECT * FROM COMPANY
WHERE WAGE > (SELECT7]] NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
1 Paul 32 Califor##) 運算子運算子運算元運算子運算子運算子運算元運算子運算子運算元。真值表& 與| 如下:
pq
p & q
##p | q | 0 | 0 | 0 | #0
---|
##0 | #1 | 0 | 1 |
1 | 1 | 1 | # 1 |
1 | 0 | 0 | |
# 假設如果A = 60,且B = 13,現在以二進位格式,它們如下所示: A = 0011 1100 ##B = 0000 1101 -----------------A&B = 0000 1100##A&B = 0000 1100A|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 line sqlite> select 60 | 13; 60 | 13 = 61##卷##60 & 13 = 12
sqlite> select 60 ^ 13; 10 * 20 = 200
60) = -61
sqlite> select (60 << 2); (60 << 2) = 240
; 2); (60 >> 2) = 15
|