2016-05-24 6 views
1

Insbesondere suche ich nach einer Möglichkeit, um meine ähnliche Abfragen einfacher neu schreiben, ohne jedes Mal die "niedrigere" Funktion verwenden zu müssen.Gibt es eine einfachere Möglichkeit, SQL Server-Abfragen für PostgreSQL neu zu schreiben?

In SQL Server, würde meine Abfrage wie folgt aussehen:

WHERE (FIELD LIKE '%Foot%Locker%' or FIELD LIKE '%Foot%Action%' or FIELD LIKE '%Champs%') 

In PostgreSQL, muss ich jede Abfrage als solche neu schreiben (wenn ich meine Abfrage wollen beide Foot Locker und Fußschließfach und andere Kappen zu erfassen angetriebene Permutation):

WHERE (lower(FIELD) LIKE lower('%foot%locker%') or lower(FIELD) LIKE lower('%foot%action%') or lower(FIELD) LIKE lower('%champs%') 

Dies ist natürlich sehr ärgerlich. Ich muss Hunderte von Abfragen neu schreiben. Gibt es einen einfachen Workaround?

Antwort

4

Postgres hat genau das, was Sie suchen ilike:

Das Schlüsselwort ILIKE kann statt LIKE verwendet werden, das Spiel Groß- und Kleinschreibung nach dem aktiven locale zu machen. Dies ist nicht im SQL-Standard, sondern ist eine PostgreSQL-Erweiterung.

(Dokumentierte here.)

Also, Sie so etwas wie tun:

WHERE (field ILIKE '%foot%locker%' or FIELD ILIKE '%foot%action%' or FIELD) ILIKE '%champs%' 

Oder, wenn Sie bevorzugen:

WHERE lower(field) ~ '(foot.*locker)|(foot.*action)|champ' 
+1

Sie brauchen eigentlich nicht die ' lower() 'wenn Sie' ~ * 'anstelle von' ~ 'verwenden –

Verwandte Themen