Regulärer Ausdruck in PostgreSQL

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