Expression régulière dans PostgreSQL
L'expression régulière est un outil très puissant pour les langages de programmation comme java, .NET, PHP, Perl… ou même PostgreSQL.
Ici, j'écris quelques exemples de base pour montrer comment utiliser l'expression régulière dans PostgreSQL.
1)isdigit function - Cette fonction est manquante dans PostgreSQL, car il s'agit d'une fonction intégrée dans d'autres bases de données.
C'est une fonction très utile pour valider uniquement le nombre autorisé. Cependant, nous pouvons créer la fonction isdigit nous-mêmes dans PostgreSQL.
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 - Cette fonction est également manquante dans PostgreSQL, car il s'agit d'une fonction intégrée dans d'autres bases de données.
C'est une fonction très utile pour valider uniquement la chaîne de caractères autorisée. Cependant, nous pouvons créer la fonction isString nous-mêmes dans PostgreSQL.
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 - Je ne pense pas que ce soit une fonction intégrée dans une autre base de données. Cette fonction est utilisée pour valider l'autorisation IP.
Exemple 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
Exemple 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, impressionnant à droite? En fait, l'expression régulière est plus puissante que la fonction simple ci-dessus. Il vaut la peine d'investir du temps pour l'étudier. Veuillez aller ici si vous voulez en savoir plus
http://en.wikipedia.org/wiki/Regular_expression
Veuillez également me faire part de votre exemple, si cela ne vous dérange pas. Merci