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

SQL Not Equal To () Operator für Anfänger

In SQL ist der Ungleich-Operator (<> ) vergleicht die Ungleichheit zweier Ausdrücke. Das heißt, es testet, ob ein Ausdruck nicht ist gleich einem anderen Ausdruck.

Wenn einer oder beide Operanden NULL sind , NULL zurückgegeben wird.

SQL hat auch einen anderen Ungleich-Operator (!= ), was dasselbe tut. Welches Sie verwenden, hängt möglicherweise von Ihrem DBMS ab, welches Sie am liebsten verwenden und vielleicht auch davon, ob Ihre Organisation Codierungskonventionen hat, die vorschreiben, welches verwendet werden sollte.

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 haben wollten, die nicht einen bestimmten Eigentümer haben, könnten wir Folgendes tun:

SELECT *
FROM Pets
WHERE OwnerId <> 3;

Ergebnis:

+---------+-------------+-----------+-----------+------------+
| PetId   | PetTypeId   | OwnerId   | PetName   | DOB        |
|---------+-------------+-----------+-----------+------------|
| 3       | 2           | 2         | Scratch   | 2018-10-01 |
| 5       | 1           | 1         | Tweet     | 2020-11-28 |
| 6       | 3           | 4         | Fluffy    | 2020-09-17 |
| 7       | 3           | 2         | Bark      | NULL       |
| 8       | 2           | 4         | Meow      | NULL       |
+---------+-------------+-----------+-----------+------------+

Unsere Abfrage verwendet den Ungleich-Operator (<> ), um zu testen, ob die OwnerId Spalte ist nicht gleich 3 . Die Abfrage gibt alle Haustiere zurück, die nicht die Besitzernummer 3 als Besitzer haben.

Strings

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

SELECT *
FROM Pets
WHERE 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       |
+---------+-------------+-----------+-----------+------------+

Mehrere Bedingungen

Wenn Sie mehrere Bedingungen haben, können Sie mehrere Operatoren verwenden (sowohl dieselben als auch unterschiedliche Operatoren).

So:

SELECT * FROM Pets 
WHERE OwnerId <> 1 AND OwnerId <> 3;

Ergebnis:

+---------+-------------+-----------+-----------+------------+
| PetId   | PetTypeId   | OwnerId   | PetName   | DOB        |
|---------+-------------+-----------+-----------+------------|
| 3       | 2           | 2         | Scratch   | 2018-10-01 |
| 6       | 3           | 4         | Fluffy    | 2020-09-17 |
| 7       | 3           | 2         | Bark      | NULL       |
| 8       | 2           | 4         | Meow      | NULL       |
+---------+-------------+-----------+-----------+------------+

Verneinung der Bedingung

Wenn Sie NOT verwenden -Operator verwenden, um die vom Ungleich-Operator bereitgestellte Bedingung zu negieren, erhalten Sie am Ende die Ergebnisse des Gleichheits-Operators (= )-Operator:

SELECT *
FROM Pets
WHERE NOT PetName <> 'Fluffy';

Ergebnis:

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

In diesem Fall verwenden Sie besser gleich (= )-Operator wie folgt:

SELECT *
FROM Pets
WHERE PetName = 'Fluffy';

Dies selbst könnte natürlich mit NOT negiert werden -Operator, der uns dann dasselbe Ergebnis liefern würde wie das Gleichheitszeichen (<> ) Operator gibt uns:

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

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 Ungleich-Operator 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 Nicht-NULL Werten ist IS NOT NULL zu verwenden .

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

SELECT * FROM Pets 
WHERE DOB IS NOT NULL;

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

Jetzt erhalten wir nur die Zeilen, die nicht NULL sind im DOB Spalte.

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