Regulärer Ausdruck in PostgreSQL
Regulärer Ausdruck ist ein sehr leistungsfähiges Werkzeug für Programmiersprachen wie Java, .NET, PHP, Perl… oder sogar PostgreSQL.
Hier schreibe ich einige grundlegende Beispiele, um zu zeigen, wie regulärer Ausdruck in PostgreSQL verwendet wird.
1)isdigit function - Diese Funktion fehlt in PostgreSQL, da dies eine in anderen Datenbanken integrierte Funktion ist.
Dies ist eine sehr nützliche Funktion, um nur die zulässige Anzahl zu überprüfen. In PostgreSQL können wir jedoch selbst isdigit-Funktionen erstellen.
create or replace function isdigit(text) returns boolean as ' select $1 ~ ''^(-)?[0-9]+$'' as result ' language sql; --test function select isdigit('1') --return true select isdigit('A') --return false
2)isString function - Diese Funktion fehlt auch in PostgreSQL, da dies eine in anderen Datenbanken integrierte Funktion ist.
Dies ist eine sehr nützliche Funktion, um nur die zulässige Zeichenfolge zu überprüfen. Wir können jedoch die isString-Funktion selbst in PostgreSQL erstellen.
create or replace function isString(text) returns boolean as ' select $1 ~ ''^(-)?[a-zA-Z]+$'' as result ' language sql; --test function select isString('1') --return false select isString('A') --return true
3)isIPAddress function - Ich glaube nicht, dass dies eine integrierte Funktion in einer anderen Datenbank ist. Diese Funktion wird zum Überprüfen der zulässigen IP-Adresse verwendet.
Beispiel A
--check ipaddress create or replace function isIPAddress(text) returns boolean as ' select $1 ~ ''^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$'' as result ' language sql; --test function select isIPAddress('202.111.0.1') --return true select isIPAddress('202.ZZZ.0.A') --return false select isIPAddress('202.11199999999.1.100') --return true
Beispiel B
create or replace function isIPAddressStrict(text) returns boolean as ' select $1 ~ ''^[0-9]?[0-9]?[0-9]?\.[0-9]?[0-9]?[0-9]?\.[0-9]?[0-9]?[0-9]?\.[0-9]?[0-9]?[0-9]?$'' as result ' language sql; --test function select isIPAddressStrict('202.111.0.1') --return true select isIPAddressStrict('202.ZZZ.0.A') --return false select isIPAddressStrict('202.11199999999.1.100') --return false
Wow, beeindruckend, oder? Tatsächlich ist der reguläre Ausdruck leistungsfähiger als die oben beschriebene einfache Funktion. Es lohnt sich, Zeit zu investieren, um sich damit zu beschäftigen. Bitte gehen Sie hier, wenn Sie mehr darüber erfahren möchten
http://en.wikipedia.org/wiki/Regular_expression
Bitte teile mir auch dein Beispiel mit, wenn es dir nichts ausmacht. Vielen Dank