等号演算子(= )は、おそらくSQLで最も一般的に使用される演算子です。 2つの式の同等性を比較します。 SQLの旅を始めたばかりの場合でも、おそらくこの演算子を知っているでしょう。
ソーステーブル
データベースに次のテーブルが含まれていると想像してください。これは、このページの例で使用する表です。
SELECT * FROM Pets; 結果:
+---------+-------------+-----------+-----------+------------+ | PetId | PetTypeId | OwnerId | PetName | DOB | |---------+-------------+-----------+-----------+------------| | 1 | 2 | 3 | Fluffy | 2020-11-20 | | 2 | 3 | 3 | Fetch | 2019-08-16 | | 3 | 2 | 2 | Scratch | 2018-10-01 | | 4 | 3 | 3 | Wag | 2020-03-15 | | 5 | 1 | 1 | Tweet | 2020-11-28 | | 6 | 3 | 4 | Fluffy | 2020-09-17 | | 7 | 3 | 2 | Bark | NULL | | 8 | 2 | 4 | Meow | NULL | +---------+-------------+-----------+-----------+------------+ (8 rows affected)
例
特定の飼い主と一緒にすべてのペットを飼いたい場合は、次のようにすることができます。
SELECT *
FROM Pets
WHERE OwnerId = 3; 結果:
+---------+-------------+-----------+-----------+------------+ | PetId | PetTypeId | OwnerId | PetName | DOB | |---------+-------------+-----------+-----------+------------| | 1 | 2 | 3 | Fluffy | 2020-11-20 | | 2 | 3 | 3 | Fetch | 2019-08-16 | | 4 | 3 | 3 | Wag | 2020-03-15 | +---------+-------------+-----------+-----------+------------+
このクエリでは、equals演算子(=)を使用しています )OwnerIdの値が等しいかどうかを比較します 列と3 。
この場合、所有者番号3には3匹のペットがいます。
文字列
文字列値と比較するときは、文字列を引用符で囲みます。たとえば、Fluffyという名前のすべてのペットに関する情報を取得したい場合は、次のようにすることができます。
SELECT *
FROM Pets
WHERE PetName = 'Fluffy'; 結果:
+---------+-------------+-----------+-----------+------------+ | PetId | PetTypeId | OwnerId | PetName | DOB | |---------+-------------+-----------+-----------+------------| | 1 | 2 | 3 | Fluffy | 2020-11-20 | | 6 | 3 | 4 | Fluffy | 2020-09-17 | +---------+-------------+-----------+-----------+------------+
このクエリでは、equals演算子(=)を使用しています )PetNameの値が等しいかどうかを比較します 列と文字列Fluffy 。
私たちの場合、ペットホテルには現在Fluffyという2匹のペットがいます。
複数の条件
複数の条件がある場合は、複数の等号演算子を使用できます。
このように:
SELECT * FROM Pets
WHERE PetName = 'Fluffy' OR PetName = 'Tweet'; 結果:
+---------+-------------+-----------+-----------+------------+ | PetId | PetTypeId | OwnerId | PetName | DOB | |---------+-------------+-----------+-----------+------------| | 1 | 2 | 3 | Fluffy | 2020-11-20 | | 5 | 1 | 1 | Tweet | 2020-11-28 | | 6 | 3 | 4 | Fluffy | 2020-09-17 | +---------+-------------+-----------+-----------+------------+
PetNameが含まれる行を返したことがわかります。 列はFluffyのいずれかでした またはTweet 。
条件を否定する
NOTを使用できます equals演算子によって提供される条件を否定する演算子。次に例を示します。
SELECT *
FROM Pets
WHERE NOT PetName = 'Fluffy'; 結果:
+---------+-------------+-----------+-----------+------------+ | PetId | PetTypeId | OwnerId | PetName | DOB | |---------+-------------+-----------+-----------+------------| | 2 | 3 | 3 | Fetch | 2019-08-16 | | 3 | 2 | 2 | Scratch | 2018-10-01 | | 4 | 3 | 3 | Wag | 2020-03-15 | | 5 | 1 | 1 | Tweet | 2020-11-28 | | 7 | 3 | 2 | Bark | NULL | | 8 | 2 | 4 | Meow | NULL | +---------+-------------+-----------+-----------+------------+
これを行う別の方法は、<>のいずれかであるnotequal演算子を使用することです。 または!= (または両方)DBMSによって異なります。
NULL値
元のサンプルテーブルにいくつかのNULLが含まれていることに気付いたかもしれません。 DOB列の値。
NULLを含む列 価値がないことを意味します。これは0とは異なります またはfalse 、または空の文字列ですら。
equals演算子を使用してNULLと比較することはできません 。実際、これはDBMSとその構成によって異なる場合があります。ただし、ここでは、DOB列をNULLと比較しようとするとどうなるかを見てみましょう。 。
SELECT * FROM Pets
WHERE DOB = NULL; 結果:
(0 rows affected)
NULLをテストする方法 ISを使用することです 。
したがって、上記のステートメントを次のように書き直す必要があります。
SELECT * FROM Pets
WHERE DOB IS NULL; 結果:
+---------+-------------+-----------+-----------+-------+ | PetId | PetTypeId | OwnerId | PetName | DOB | |---------+-------------+-----------+-----------+-------| | 7 | 3 | 2 | Bark | NULL | | 8 | 2 | 4 | Meow | NULL | +---------+-------------+-----------+-----------+-------+
NULL 値は、初心者が頭を動かすのが難しい場合があります。実際、経験豊富な開発者が頭を悩ませるのは難しいことです。 SQLでは、NULL NULLとは少し異なる意味を持ちます 他のほとんどのプログラミング言語で。
ただし、覚えておくべき重要なことは、SQLではNULL 価値の欠如を意味します。価値はありません。したがって、最初から価値がないため、他の何かと等しいか等しくないとは言えません。
興味がある場合は、SQL Server ANSI_NULLS Explainedを参照してください。 NULLの方法を変更する方法を確認する 値はSQLServerで処理されます。