2017-10-10 1 views
0

Ich muss auf einer Autos Tabelle in meiner Postgresql-Datenbank mathing alle einige Schlüsselwörter, aber mit einigen anderen keyworks ... zum Beispiel ... Ich brauche Alle Autos weichen enthalten ‚c4‘ AND ‚citroen‘ auf seine slug zu finden, aber weichen die Worte "picasso nicht enthält OR‚grand‘Postgresql (9.6) Wählen Sie Datensätze mit ILIKE ALL aber mit Ausnahme einiger Wörter

ich den folgenden Code versucht habe, aber nicht funktioniert hat:

SELECT * FROM cars.cars 
WHERE slug ILIKE ALL (array['%citroen%','%c4%']) 
AND slug NOT ILIKE ANY (array['%picasso%','%grand%']) 

Es findet nur, die enthält Citroen AND c4, aber nicht die Datensätze, die Picasso enthält OR grand

Danke

Antwort

1

Ändern Sie ANY auf alle in der Sekunde wo Bedingung. Gefällt mir:

SELECT * FROM cars.cars 
WHERE slug ILIKE ALL (array['%citroen%','%c4%']) 
AND slug NOT ILIKE ALL (array['%picasso%','%grand%']) 
+0

Ok, danke, es hat gut funktioniert, aber was ist der Unterschied zwischen ANY und ALL dann? –

+1

Denken Sie an NICHT ALLE = ANY und NOT ANY = ALL. – ninjarails

+0

Danke, das hat meine Ideen sehr aufgeklärt. –

Verwandte Themen