sql >> Database teknologi >  >> RDS >> PostgreSQL

Fejl ved brug af mønstermatching, der ikke ligner nogen i PostgreSQL

Normalt bruger jeg mønstermatchning ved at bruge søgeordet "ikke med".

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

Så prøvede jeg at bruge søgeordet "ikke som nogen"

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

Jeg tror, ​​resultatet bliver det samme. Men efter kørsel er resultaterne anderledes. Jeg er nysgerrig efter, hvorfor resultaterne er anderledes, og efter at jeg har fundet ud af, hvordan ethvert søgeord fungerer, er det, at det vil returnere sandt, hvis et af elementerne er opfyldt. Så hvis elementet A sammenlignes med nøgleordet ikke som nogen, vil det være sandt, fordi det opfylder kriterierne, ikke et af elementerne i arrayet, nemlig B. Og omvendt. Mens det ønskede resultat hverken er element A eller element B. For at besvare dette problem bruges nøgleordet "ikke som alle".

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

Reference
stackoverflow


  1. Hvordan vælger man mere end 1 post om dagen?

  2. Betinget WHERE-klausul i SQL Server

  3. Hvordan MONTH() virker i MariaDB

  4. Beskytter mysql_real_escape_string() FULDSTÆNDIG mod SQL-injektion?