PostgreSQL Regular Expression - Ohne strings mit zahlen
Bin ich angefangen mit Postgre Regulären Ausdrücken arbeiten auf PostgreSQL version 8.3.
Ich habe eine Tabelle mit Datensätzen wie folgt:
record
-----------
a
ab
abc
123abc
132abc
123ABC
abc123
4567
5678
6789
Ich wurde durch ein einfaches tutorial:
www.oreillynet.com.
Alles schien klar, bis ich kam zu der folgenden Abfrage:
SELECT record FROM myrecords WHERE record ~ '[^0-9]';
Dem tutorail sagt:
dieser Ausdruck Zeichenketten, die keine Ziffern.
Aber es kehrte folgende Ausgabe zu mir:
output
------
a
ab
abc
123abc
132abc
123ABC
abc123
Kann jemand mir erklären dieses Verhalten, bitte? Ich bin dann zu kämpfen mit einem anderen Ausdruck auf, dass die Website versucht, um auszuschließen strings, die Ziffern UND Kleinbuchstaben, die dieselbe Zeichenfolge.
Falsch: es gibt Zeichenfolgen, die mit einem oder mehr nicht-Ziffer Zeichen.
Vielen Dank, vielleicht kein sehr gutes tutorial.
Vielen Dank, vielleicht kein sehr gutes tutorial.
InformationsquelleAutor Trocader | 2014-03-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieser Befehl:
bedeutet, dass in der
record
Bereich sollte es mindestens ein nicht-Ziffer-Zeichen (das ist die Bedeutung der regex).Wenn man sieht, für die Akten gehören würde, die Ziffern und Kleinbuchstaben, dann würde ich erwarten, dass ein regex wie:
was wieder alle Datensätze mit mindestens einem Zeichen ist eine Ziffer oder Kleinbuchstabe.
Wenn Sie möchten, um die Datensätze, die keine Ziffern sind, dann würden Sie haben, verwenden Sie die folgende regex:
Hier, die
^
Zeichen außerhalb der eckigen Klammern bedeutet den Anfang des Feldes, die$
Zeichen bedeutet das Ende des Feldes, und wir verlangen, dass alle Zeichen, die zwischen nicht-Ziffern.+
zeigt an, dass es mindestens ein solches Zeichen. Wenn wir auch zulassen, leere Saiten, dann die regex Aussehen würde^[^0-9]*$
.du bist willkommen 🙂
InformationsquelleAutor Ashalynd
Andere einfache Lösung:
InformationsquelleAutor user2478690
'^[a-z]+$'
=> Schecks werden nur Buchstaben von a-z von Anfang(^) bis zum Ende des Strings (+$)Wenn Sie prüfen wollen, für die zahlen:
'^[0-9]+$'
Wenn Sie prüfen wollen, für zahlen und ein Zeichen, sagen wir "." :
'^[0-9\.]+$'
, wo "\" ist ein EscapezeichenInformationsquelleAutor Cosmin Gruian