2017-08-14 6 views
1

Ich habe Stackoverflow nach Abfragen zum Auffinden von Zellen mit Sonderzeichen durchsucht.PostgreSQL-Abfrage für nicht alphanumerisch

sah ich diese auf einen anderen Dienstposten

SELECT * FROM myTable WHERE myField LIKE '%[^a-zA-Z0-9]%' 

und patterend von ihm meinen Code unten

SELECT DESCRIPTION FROM ITEM WHERE DESCRIPTION NOT LIKE '%[a-zA-Z0-9 .-]%' 

Aber es funktioniert nicht mit dem unten Ergebnis zeigt für mich ‚-‘ ‚‘ und und Leerzeichen.

"2016 LANCER EX GT-A 2.0G CVT"

"2016 MIRAGE GLX 1.2G MT"

"MIRAGE 2016 G4 GLX 1.2G MT (UPG)"

„2016 MIRAGE G4 GLX 1.2G CVT (UPG)“

ich versuchte, es zu

SELECT DESCRIPTION FROM ITEM WHERE DESCRIPTION ~* '%[^a-zA-Z0-9 ]%' 

Ändern der 0 Ergebnisse.

Jede Hilfe wird geschätzt. Ich bin verwirrt, warum es für andere Menschen funktioniert und nicht für mich. Ich verwende Postgresql und PGadmin auf einem OpenSuse-Betriebssystem.

Antwort

0

glaube ich nicht, dass Postgres LIKE regex wie die folgenden unterstützt:

WHERE DESCRIPTION NOT LIKE '%[a-zA-Z0-9 .-]%' 

Aber Sie die Tilde Operator kann stattdessen voll regex zuzugreifen. verbal ausgedrückt, ich glaube, die Logik, die Sie hier wollen, ist:

beliebige Zeichenfolge finden, die funktionieren nicht ein oder mehr nicht alphanumerische Zeichen in der Zeichenfolge.

einen RegexMuster mit dem richtigen Muster verwenden, die die gesamte Zeichenfolge umfasst:

SELECT DESCRIPTION 
FROM ITEM 
WHERE DESCRIPTION !~ '^.*[^A-Za-z0-9 .-].*$' 

Diese beliebige Beschreibung ein oder mehr Zeichen aufweisen übereinstimmen würde, die nicht Buchstaben, Zahlen sind, Raum, Punkt oder Strich.

Verwandte Themen