Ich habe eine Tabelle mit einem Feld mit einem Array von Zeichenfolgen (Typ ist character varying(255)[]
).PostgreSQL: Where-Klausel mit LIKE, ANY, und Wildcards
Ich mag würde eine bestimmte Zeichenkette mit einem Platzhalter vergleichen, sagen 'query%'
, einem der Elemente dieses Feldes.
Diese Anforderung funktioniert und die erwarteten Ergebnisse zurückkommt:
SELECT * FROM my_table WHERE 'query' ILIKE ANY(my_field)
Aber mit dem Platzhalter, ich habe keine Ergebnisse:
SELECT * FROM my_table WHERE 'query%' ILIKE ANY(my_field)
Ich denke, der Grund ist, dass der Platzhalter nur dann unterstützt, wird bei die rechte Seite des ILIKE
Betreibers, aber ANY(my_field)
muss auch nach dem Betreiber sein.
Gibt es eine Möglichkeit zu erreichen, was ich will?
Mit PostgreSQL 9.5.
Mögliches Duplikat [PostgreSQL - Text Array enthält Wert ähnlich zu] (http://stackoverflow.com/questions/34657669/postgresql-text-array-contains-value-similar-to) – pozs
Sie haben Recht, das ist ein Duplikat, ich hatte es nicht gesehen. Aber ich bin froh, dass @klin eine ausführliche Antwort geschrieben hat, die nicht in dem anderen Post war. – scandel