sql >> Database >  >> RDS >> PostgreSQL

Fout bij gebruik van patroonovereenkomst die niet lijkt op die in PostgreSQL

Meestal gebruik ik patroonherkenning met het trefwoord "niet in".

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

Toen probeerde ik het trefwoord "niet zoals elke" te gebruiken

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

Ik denk dat het resultaat hetzelfde zal zijn. Maar na het uitvoeren zijn de resultaten anders. Ik ben benieuwd waarom de resultaten anders zijn en nadat ik erachter ben gekomen hoe het trefwoord werkt, is dat het waar wordt geretourneerd als aan een van de elementen wordt voldaan. Dus als het element A wordt vergeleken met het trefwoord niet zoals elk ander, zal het waar zijn omdat het aan de criteria voldoet, niet aan een van de elementen in de array, namelijk B. En vice versa. Hoewel het gewenste resultaat noch element A noch element B is. Om dit probleem te beantwoorden, wordt het trefwoord "niet zoals alle" gebruikt.

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

Verwijzing
stapeloverloop


  1. Kan ik de tabelnaam in een voorbereide instructie parametriseren?

  2. Een primaire sleutel voor automatisch verhogen definiëren in PostgreSQL

  3. Loop door kolommen van RECORD

  4. Voorbeelden van het converteren van 'date' naar 'smalldatetime' in SQL Server (T-SQL)