sql >> Databasteknik >  >> RDS >> PostgreSQL

Fel vid användning av mönstermatchning som inte liknar någon annan i PostgreSQL

Vanligtvis använder jag mönstermatchning med nyckelordet "inte med".

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

Sedan försökte jag använda nyckelordet "inte som någon"

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

Jag tror att resultatet blir detsamma. Men efter att ha kört är resultaten annorlunda. Jag är nyfiken på varför resultaten är annorlunda och efter att jag fått reda på hur alla sökord fungerar är att det kommer att returneras sant om ett av elementen uppfylls. Så om elementet A jämförs med nyckelordet inte likt något annat, kommer det att vara sant eftersom det uppfyller kriterierna, inte ett av elementen i arrayen, nämligen B. Och vice versa. Medan det önskade resultatet varken är element A eller element B. För att besvara detta problem används nyckelordet "inte som alla".

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

Referens
stackoverflow


  1. Åtkomst till databasen för en applikation från en annan applikation

  2. Använda aggregerade funktioner (SUM, AVG, MAX, MIN, COUNT, DISTINCT) i MySQL

  3. Räkna Antal konsekutiv förekomst av värden i tabell

  4. Skapa ny användare i MySQL och ge den full tillgång till en databas