PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Fehler bei der Verwendung von Mustervergleichen, die in PostgreSQL nicht vergleichbar sind

Normalerweise verwende ich den Musterabgleich mit dem Schlüsselwort "not in".

SELECT kolom1 from tabel where kategori not in ('A', 'B')

Dann habe ich versucht, das Schlüsselwort "nicht wie jeder" zu verwenden

SELECT kolom1 from tabel where kategori not like any (array['A', 'B'])

Ich denke das Ergebnis wird das gleiche sein. Aber nach dem Laufen sind die Ergebnisse unterschiedlich. Ich bin neugierig, warum die Ergebnisse unterschiedlich sind, und nachdem ich herausgefunden habe, wie das Schlüsselwort "any" funktioniert, gibt es "true" zurück, wenn eines der Elemente erfüllt ist. Wenn also das Element A dem Schlüsselwort nicht gefällt, wird es wahr, weil es die Kriterien nicht erfüllt, eines der Elemente im Array, nämlich B. Und umgekehrt. Während das gewünschte Ergebnis weder Element A noch Element B ist. Um dieses Problem zu lösen, wird das Schlüsselwort „nicht wie alle“ verwendet.

SELECT kolom1 from tabel where kategori not like all (array['A', 'B'])

Referenz
Stapelüberlauf