Latest web development tutorials

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のすべての論理演算子のリストです。

运算符描述
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アドレス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のビット演算子

ビット演算子はビットに作用し、ビット演算によってビット。 真理値表&や|次のように:

pqp & qp | q
0000
0101
1111
1001

仮定し、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