SQLiteの演算子
どのようなSQLiteの演算子はありますか?
オペレータが操作を実行する句は、主にこのような比較演算として、SQLiteの文に使用される予約語や文字、です。
オペレータは、条件の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ライン sqliteの> 10 + 20を選択します。 10 + 20 = 30 sqliteの> 10を選択 - 20; 10--20 = -10 sqliteの> 10 * 20を選択します。 10 * 20 = 200 sqliteの> 10月5日を選択します。 10/5 = 2 sqliteの> 12%5を選択します。 2 5 = 12%
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アドレスSALARY ---------- ---------- ---------- ---------- ---------- 1ポール32カリフォルニア20000.0 2アレン25テキサス15000.0 3テディ23ノルウェー20000.0 4マーク25リッチモンド65000.0 5デイビッド27テキサス85000.0 6金22サウスホール45000.0 7ジェームス・24ヒューストン10000.0
次の例では、様々なSQLiteの比較の使用法を示しています。
ここでは、後ろに別の章で説明しますWHERE句を使用していますが、今は、SELECT文のWHERE句に条件文を設定するために使用されて理解する必要があります。
次のSELECT文リストのすべてのレコードの給与50,000.00よりも大きいです。
SALARY> 50000 COMPANY SELECT * FROMのsqlite>。 IDのNAME AGEアドレスSALARY ---------- ---------- ---------- ---------- ---------- 4マーク25リッチモンド65000.0 5デイビッド27テキサス85000.0
次のSELECT文は、すべてのレコードに等しいSALARY 20,000.00を示しています。
SALARY = 20000 COMPANY SELECT * FROMのsqlite>。 IDのNAME AGEアドレスSALARY ---------- ---------- ---------- ---------- ---------- 1ポール32カリフォルニア20000.0 3テディ23ノルウェー20000.0
次のSELECT文は、給与は20,000.00のすべてのレコードと同じではありません示しています。
!SALARY = 20000会社からsqliteは> SELECT *; IDのNAME AGEアドレスSALARY ---------- ---------- ---------- ---------- ---------- 2アレン25テキサス15000.0 4マーク25リッチモンド65000.0 5デイビッド27テキサス85000.0 6金22サウスホール45000.0 7ジェームス・24ヒューストン10000.0
次のSELECT文は、給与は20,000.00のすべてのレコードと同じではありません示しています。
sqliteの>会社SELECT * FROM WHERE SALARY <> 20000; IDのNAME AGEアドレスSALARY ---------- ---------- ---------- ---------- ---------- 2アレン25テキサス15000.0 4マーク25リッチモンド65000.0 5デイビッド27テキサス85000.0 6金22サウスホール45000.0 7ジェームス・24ヒューストン10000.0
次のSELECT文は、給与は65,000.00のすべてのレコードの合計よりも大きい示しています。
SALARY> = 65000会社からのsqlite> SELECT *; IDのNAME AGEアドレスSALARY ---------- ---------- ---------- ---------- ---------- 4マーク25リッチモンド65000.0 5デイビッド27テキサス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アドレスSALARY ---------- ---------- ---------- ---------- ---------- 1ポール32カリフォルニア20000.0 2アレン25テキサス15000.0 3テディ23ノルウェー20000.0 4マーク25リッチモンド65000.0 5デイビッド27テキサス85000.0 6金22サウスホール45000.0 7ジェームス・24ヒューストン10000.0
次の例では、SQLiteの論理演算子の使用方法を示しています。
次のSELECT文は、すべてのレコード65000.00ためのAGE 25より大きいか等しいより大きいか等しい賃金示しています。
AGE> = 25 AND SALARY> = 65000会社からのsqlite> SELECT *; IDのNAME AGEアドレスSALARY ---------- ---------- ---------- ---------- ---------- 4マーク25リッチモンド65000.0 5デイビッド27テキサス85000.0
次のSELECT文は、すべてのレコード65000.00ためのAGE 25またはより大きいか等しいより大きいか等しい賃金示しています。
AGE> = 25 OR SALARY> = 65000会社からのsqlite> SELECT *; IDのNAME AGEアドレスSALARY ---------- ---------- ---------- ---------- ---------- 1ポール32カリフォルニア20000.0 2アレン25テキサス15000.0 4マーク25リッチモンド65000.0 5デイビッド27テキサス85000.0
次のSELECT文は、年齢がすべてのレコードのNULLでないリストし、すべてのレコードがあった、それはAGEのレコードがないことを意味NULLに等しいです。
AGEがNULLでない会社からのsqlite> SELECT *; IDのNAME AGEアドレスSALARY ---------- ---------- ---------- ---------- ---------- 1ポール32カリフォルニア20000.0 2アレン25テキサス15000.0 3テディ23ノルウェー20000.0 4マーク25リッチモンド65000.0 5デイビッド27テキサス85000.0 6金22サウスホール45000.0 7ジェームス・24ヒューストン10000.0
すべてのレコードが始まった「氣」にSELECT文リストの名前を次の文字は、「Kiが 'の後には制限はありません。
sqliteの> SELECT * FROM会社WHERE NAME LIKE 'のKi%'; IDのNAME AGEアドレスSALARY ---------- ---------- ---------- ---------- ---------- 6金22サウスホール45000.0
すべてのレコードが始まった「氣」にSELECT文リストの名前を次の文字は、「Kiが 'の後には制限はありません。
sqliteの> SELECT * FROM会社WHERE NAMEグロブ」のKi * '; IDのNAME AGEアドレスSALARY ---------- ---------- ---------- ---------- ---------- 6金22サウスホール45000.0
次のSELECT文は、25または27のすべてのレコードのAGE値を示しています。
AGE IN(25、27)COMPANY SELECT * FROMのsqlite>。 IDのNAME AGEアドレスSALARY ---------- ---------- ---------- ---------- ---------- 2アレン25テキサス15000.0 4マーク25リッチモンド65000.0 5デイビッド27テキサス85000.0
次のSELECT文は、AGEはどちらも25も全てのレコードの27である値を示します。
AGE NOT IN(25、27)COMPANY SELECT * FROMのsqlite>。 IDのNAME AGEアドレスSALARY ---------- ---------- ---------- ---------- ---------- 1ポール32カリフォルニア20000.0 3テディ23ノルウェー20000.0 6金22サウスホール45000.0 7ジェームス・24ヒューストン10000.0
次のSELECT文は、値のAGE 25と27の間のすべてのレコードを示しています。
sqliteの> SELECT * FROM COMPANY WHERE 25と27との間のAGE; IDのNAME AGEアドレスSALARY ---------- ---------- ---------- ---------- ---------- 2アレン25テキサス15000.0 4マーク25リッチモンド65000.0 5デイビッド27テキサス85000.0
WHERE句は、演算子をEXISTSと組み合わせて使用されているの背後に次のSELECTステートメントは、65000を持つすべてのレコード用のSQLサブクエリは、サブクエリのfind SALARY> AGEフィールドを使用し、サブクエリが返すにおける外側のクエリのAGEの存在感を示していますすべてのレコードの結果:
会社からのsqlite> SELECT AGE (SALARY> 65000会社からAGEをSELECT)WHEREをEXISTS。 AGE ---------- 32 25 23 25 27 22 24
次のSELECT文は、サブAGEよりも大きいクエリの結果は、外部クエリのリストを返し、句と>演算子を併用するWHERE背後に、SQLのサブクエリは、サブクエリのfind SALARY> 65000を持つすべてのレコードのAGEフィールドを使用しています年齢のすべてのレコード:
会社からのsqlite> SELECT * WHERE AGE>(SALARY> 65000会社からAGEを選択します)。 IDのNAME AGEアドレスSALARY ---------- ---------- ---------- ---------- ---------- 1ポール32カリフォルニア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
| 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ライン sqliteの>を選択60 | 13; 60 | 13 = 61 sqliteの> 60&13を選択します。 60&13 = 12 sqliteの> 60 ^ 13を選択します。 10 * 20 = 200 sqliteの>(〜60)を選択します。 (〜60)= -61 sqliteの>(60 << 2)を選択します。 (2 << 60)= 240 sqliteの>を選択し(60 >> 2)。 (60 >> 2)= 15