Ich habe eine Spalte mit einem Array von Autoren. Wie kann ich den Operator ~*
verwenden, um zu überprüfen, ob einer seiner Werte mit einem bestimmten regulären Ausdruck übereinstimmt?Wie regulärer Ausdruck mit ANY Array-Operator verwendet werden
Der Operator ~*
verwendet eine Zeichenfolge, die auf der linken Seite und der reguläre Ausdruck auf der rechten Seite überprüft wird. Die Dokumentation sagt der ANY
Operator auf der rechten Seite sein muss, so offensichtlich
`
SELECT '^p' ~* ANY(authors) FROM book;
`
funktioniert nicht wie PostgreSQL die Zeichenfolge ^p
gegen Ausdrücke in der Anordnung enthalten sind, zu entsprechen versucht .
Irgendeine Idee?
Sie sollten Ihre Daten normalisieren, so dass Sie kein "Array" in einer einzelnen Spalte haben. –
Denkbar ... Ich brauche/will keine Tabelle für Autoren pflegen. Es könnten jedoch Telefonnummern sein. – greg
Nun, ob Sie * eine separate Tabelle pflegen wollen oder nicht, genau deshalb sagen alle dazu. Das Durchsuchen einer Liste innerhalb einer einzelnen Spalte wird immer früher oder später unübersichtlich. –