等号演算子(=
)は、おそらく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で処理されます。