Oracle regexp_like negieren Besondere char
Ich bin mit Oracle 10g versuchen, um AUSZUSCHLIEßEN, Einträge, enthalten eine -
oder eine _
mit einem caret-Zeichen in der Zeichenklasse in Oracle 10g. Ich kann die Einträge mit Bindestrich oder Unterstrich durch:
WITH example
AS (SELECT 'AAAA-1' n FROM DUAL
UNION
SELECT 'AAAAA_1' FROM DUAL
UNION
SELECT 'AAAA' FROM DUAL)
SELECT *
FROM example
WHERE REGEXP_LIKE (n, '[_\-]')
Ich weiß, ich kann mit der Verwendung NICHT, aber wie kann ich negieren, diese mit einem caret-Zeichen (^)
? Ich habe versucht [^_\-]
gibt alles, [^[_\-]]
gibt nichts, und [^(_\-)]
die ungültig ist.
Vielleicht finden Sie regexper.com nützlich für den Versuch, aus den Antworten. Es gibt Ihnen eine visuelle Darstellung der regex und hat mich gerettet Stunden
InformationsquelleAutor mbow | 2013-05-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
fiddle
Blick auf femtoRgon Antwort (über
*
und Dübel).InformationsquelleAutor Egor Skriptunoff
Versuchen:
Ich glaube, dass
[^_-]
entspricht allem, weil es ist auf der Suche nach Alle Zeichen, das ist etwas anderes als '_' oder '-'. Ähnlich wie das Gegenteil, das funktioniert,[_-]
, die findet alle Zeichen, die irgendwo in der Zeichenfolge, die ist entweder mit einem '-' oder '_'.Um das zu ändern, akzeptiert eine beliebige Anzahl von Zeichen zwischen Ihnen und Charakter-Klasse
[^_-]
- und surround mit^
(Beginn der Zeile) und$
(end of line).Rechts -, Oracle-regexes nicht auf der Flucht in Charakter-Klassen.
InformationsquelleAutor femtoRgon
Ich würde wahrscheinlich NICHT regexp_like, das ist klar. Da du aber erwähnt Sie nicht verwenden möchten, NICHT, dann würde ich wahrscheinlich verwenden Sie diese (wieder, mehr klar imo):
Ich bin sicher, Sie würde über 20 verschiedenen regexp-Versionen bald 😉
Wenn Sie sich über spezielle Behandlung von leeren Zeichenfolgen(null), verwenden Sie eine einfache nvl:
Ich erwähne dies, weil mit regexp_like erlaubt dies nicht (nvl ist nicht ein relationaler operator, aber in diesem Fall wir vergleichen instr einer Reihe, so können wir nvl auf den instr (Links) Teil.
Aber gewährt dies hängt davon ab, ob Sie wollen sagen nichts über die Existenz oder nicht-Existenz von einigen Zeichen eine null 😉
InformationsquelleAutor tbone