Sie benötigen MySQL RLIKE Expression in bestimmten Zeichen bestimmte Zeichenfolgen auszuschließen Endung
Frage
Also ich habe mit RLIKE arbeitet einige Daten in einer neuen Anwendung zu ziehen und vor allem es zu genießen.
Bisher Ich habe RLIKE Anfragen wurden unter Verwendung von 3 Arten von Ergebnissen zurückzukehren (Dateien, Verzeichnisse und alles).
Die Abfragen (und Beispielergebnisse) folgen:
**All**:
SELECT * FROM public WHERE obj_owner_id='test' AND obj_namespace
RLIKE '^user/test/public/[-0-9a-z_./]+$' ORDER BY obj_namespace
user/test/public/a-test/.comment
user/test/public/a-test/.delete
user/test/public/directory/
user/test/public/directory/image.jpg
user/test/public/index
user/test/public/site-rip
user/test/public/site-rip2
user/test/public/test-a
user/test/public/widget-test
**Files**:
SELECT * FROM public WHERE obj_owner_id='test' AND obj_namespace
RLIKE '^user/test/public/[-0-9a-z_./]+[-0-9a-z_.]+$' ORDER BY obj_namespace
user/test/public/a-test/.comment
user/test/public/a-test/.delete
user/test/public/directory/image.jpg
user/test/public/index
user/test/public/site-rip
user/test/public/site-rip2
user/test/public/test-a
user/test/public/widget-test
**Directories**:
SELECT * FROM public WHERE obj_owner_id='test' AND obj_namespace
RLIKE '^user/test/public/[-0-9a-z_./]+/$' ORDER BY obj_namespace
user/test/public/directory/
Das funktioniert gut für die oben genannten drei Grundszenarien aber unter bestimmten Situationen werde ich spezielle ‚Suffixe‘ werde, einschließlich ich mag aus den Ergebnissen der Abfragen ausgeschlossen werden (ohne zu PHP-Funktionen zurückgreifen zu müssen, es zu tun).
Ein gutes Beispiel für eine solche Zeichenfolge wäre:
user/test/public/a-test/.delete
Diese Daten (es gibt mehr Reihen dann nur obj_namespace) gilt als gelöscht und in den Dateien und Alle Abfragen vom Typ ich es mag innerhalb des Ausdrucks weggelassen wird wenn möglich.
Das Gleiche gilt für die /.comments und alle solche Meta-Daten immer im gleichen Format sein:
/.[sometext]
hatte ich gehofft, diese Funktion zu nutzen ausgiebig durch meine Anwendung, so hoffe ich, es könnte eine sehr einfache Antwort sein. ( Kreuze Finger )
Wie auch immer, dank wie immer für jeden / alle Antworten und Feedback.
Lösung
Sounds wie Sie könnten nur eine weitere Bedingung für jede Abfrage hinzufügen:
... AND obj_namespace NOT RLIKE '/[.][a-z]+$' ...