Die IN- und ANY-Strukturen verstehen
In PostgreSQL sind IN und ANY beides Konstrukte, die Mengenvergleiche durchführen, um festzustellen, ob ein Wert in einer Menge vorhanden ist.
Logische Äquivalenz
Logisch gesehen entspricht IN = ANY. Ihre Syntax und Funktionalität unterscheiden sich jedoch.
Grammatikvariationen
IN und ANY haben jeweils zwei Syntaxvarianten:
Funktionelle Unterschiede
VORTEILE ALLER
ANY bietet mehr Flexibilität, da es mit verschiedenen Operatoren kombiniert werden kann, einschließlich =. Zum Beispiel:
<code class="language-sql">SELECT 'foo' LIKE ANY('{FOO,bar,%oo%}');</code>
Skalierung und Leistung
Bei einer großen Anzahl von Werten kann die Verwendung von Sätzen für IN und ANY die Leistung verbessern.
Invertieren und Ausschließen
Um Zeilen zu finden, deren Werte nicht im angegebenen Array enthalten sind:
<code class="language-sql">SELECT * FROM tbl WHERE id <> ALL (ARRAY[1, 2]);</code>
Alle Ausdrücke im obigen Codeblock sind gleichwertig und schließen Zeilen mit den ID-Werten 1 und 2 aus.
Einbeziehung von NULL-Werten
Standardmäßig werden Zeilen mit der ID NULL ausgeschlossen. Um sie einzuschließen, verwenden Sie den folgenden Ausdruck:
<code class="language-sql">SELECT * FROM tbl WHERE (id = ANY ('{1, 2}')) IS NOT TRUE;</code>
Das obige ist der detaillierte Inhalt vonIN vs. ANY in PostgreSQL: Was sind die Hauptunterschiede und wann sollte ich sie verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!