Database
 sql >> Datenbank >  >> RDS >> Database

SQL-Gleichheitsoperator (=) für Anfänger

Der Gleichheitsoperator (= ) ist wahrscheinlich der am häufigsten verwendete Operator in SQL. Es vergleicht die Gleichheit zweier Ausdrücke. Auch wenn Sie Ihre SQL-Reise gerade erst begonnen haben, werden Sie diesen Operator wahrscheinlich kennen.

Quelltabelle

Stellen Sie sich vor, unsere Datenbank enthält die folgende Tabelle. Dies ist die Tabelle, die wir für die Beispiele auf dieser Seite verwenden werden.

SELECT * FROM Pets;

Ergebnis:

+---------+-------------+-----------+-----------+------------+
| 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)

Beispiel

Wenn wir alle Haustiere mit einem bestimmten Besitzer haben wollten, könnten wir das tun:

SELECT *
FROM Pets
WHERE OwnerId = 3;

Ergebnis:

+---------+-------------+-----------+-----------+------------+
| 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 |
+---------+-------------+-----------+-----------+------------+

Unsere Abfrage verwendet den Gleichheitsoperator (= ), um die Gleichheit des Werts der OwnerId zu vergleichen Spalte und 3 .

In diesem Fall hat Besitzer Nummer 3 3 Haustiere.

Strings

Verwenden Sie beim Vergleichen mit einem Zeichenfolgenwert Anführungszeichen um die Zeichenfolge. Wenn wir beispielsweise Informationen über alle Haustiere mit dem Namen Fluffy erhalten möchten, könnten wir Folgendes tun:

SELECT *
FROM Pets
WHERE PetName = 'Fluffy';

Ergebnis:

+---------+-------------+-----------+-----------+------------+
| PetId   | PetTypeId   | OwnerId   | PetName   | DOB        |
|---------+-------------+-----------+-----------+------------|
| 1       | 2           | 3         | Fluffy    | 2020-11-20 |
| 6       | 3           | 4         | Fluffy    | 2020-09-17 |
+---------+-------------+-----------+-----------+------------+

Unsere Abfrage verwendet den Gleichheitsoperator (= ), um die Gleichheit des Werts von PetName zu vergleichen Spalte und die Zeichenfolge Fluffy .

In unserem Fall können wir sehen, dass das Haustierhotel derzeit zwei Haustiere namens Fluffy hat.

Mehrere Bedingungen

Wenn Sie mehrere Bedingungen haben, können Sie mehrere Gleichheitsoperatoren verwenden.

So:

SELECT * FROM Pets 
WHERE PetName = 'Fluffy' OR PetName = 'Tweet';

Ergebnis:

+---------+-------------+-----------+-----------+------------+
| 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 |
+---------+-------------+-----------+-----------+------------+

Wir können sehen, dass es die Zeilen zurückgegeben hat, in denen PetName Spalte war entweder Fluffy oder Tweet .

Verneinung der Bedingung

Sie können den NOT verwenden -Operator, um die vom Gleichheitsoperator bereitgestellte Bedingung zu negieren. Hier ist ein Beispiel:

SELECT *
FROM Pets
WHERE NOT PetName = 'Fluffy';

Ergebnis:

+---------+-------------+-----------+-----------+------------+
| 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       |
+---------+-------------+-----------+-----------+------------+

Alternativ dazu können Sie den Ungleich-Operator verwenden, der entweder <> ist oder != (oder beides) abhängig von Ihrem DBMS.

NULL-Werte

Sie haben vielleicht bemerkt, dass unsere ursprüngliche Beispieltabelle ein paar NULL enthält Werte in der DOB-Spalte.

Eine Spalte, die NULL enthält bedeutet, dass es keinen Wert hat. Dies unterscheidet sich von 0 oder false , oder sogar eine leere Zeichenfolge.

Sie können den Gleichheitsoperator nicht verwenden, um mit NULL zu vergleichen . Tatsächlich kann dies von Ihrem DBMS und seiner Konfiguration abhängen. Aber jetzt schauen wir uns an, was passiert, wenn ich versuche, die DOB-Spalte mit NULL zu vergleichen .

SELECT * FROM Pets 
WHERE DOB = NULL;

Ergebnis:

(0 rows affected)

Die Methode zum Testen auf NULL ist die Verwendung von IS .

Daher müssten wir die obige Aussage wie folgt umschreiben.

SELECT * FROM Pets 
WHERE DOB IS NULL;

Ergebnis:

+---------+-------------+-----------+-----------+-------+
| PetId   | PetTypeId   | OwnerId   | PetName   | DOB   |
|---------+-------------+-----------+-----------+-------|
| 7       | 3           | 2         | Bark      | NULL  |
| 8       | 2           | 4         | Meow      | NULL  |
+---------+-------------+-----------+-----------+-------+

NULL Werte können für Anfänger schwierig sein, sich zurechtzufinden. Tatsächlich können sie für erfahrene Entwickler eine knifflige Sache sein, um sich zurechtzufinden! In SQL NULL hat eine etwas andere Bedeutung als NULL in den meisten anderen Programmiersprachen.

Aber es ist wichtig, sich daran zu erinnern, dass in SQL NULL ist bedeutet das Fehlen eines Wertes. Es gibt keinen Wert. Daher können wir nicht sagen, dass es mit etwas anderem gleich oder ungleich ist, da es keinen Wert gibt, mit dem man beginnen kann.

Wenn Sie interessiert sind, lesen Sie SQL Server ANSI_NULLS Explained um zu sehen, wie Sie den Weg NULL ändern können Werte werden in SQL Server behandelt.