Sqlite-logical-operators

提供:Dev Guides
移動先:案内検索

SQLite-論理演算子

次のレコードを持つ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ではないすべてのレコードをリストします。これは、どのレコードもNULLに等しいAGEを持たないため、すべてのレコードを意味します。

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フィールドを持つすべてのレコードを検索し、EXISTS演算子とともにWHERE句を使用して、外部クエリからの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以降の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