Expression régulière sous oracle, pl / sql
Résolu
Nouvelle_Informaticienne
Messages postés
153
Date d'inscription
Statut
Membre
Dernière intervention
-
Nouvelle_Informaticienne Messages postés 153 Date d'inscription Statut Membre Dernière intervention -
Nouvelle_Informaticienne Messages postés 153 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Expression régulière sql
- Expression écrite cm1 cm2 télécharger gratuit - Télécharger - Éducatifs
- Microsoft expression encoder - Télécharger - Divers Utilitaires
- Logiciel sql - Télécharger - Bases de données
- Blob sql ✓ - Forum Webmastering
- Avoir du ping expression ✓ - Forum Réseau
1 réponse
Bonjour,
En une seule expression rationnelle, ça peut être un peu compliqué, et pas facile à maintenir.
Par contre, comme si je l'imagine, tu es dans une clause WHERE, tu peux faire plusieurs expressions reliées par des AND. Cela pourrait avoir un coût en termes de performances, à toi de voir si c'est rédhibitoire.
L'avantage également, c'est de pouvoir utiliser NOT, pour les restrictions.
En décomposant dans le même ordre que tes points :
Pour la taille max, il y a sûrement une fonction plus simple que par expression rationnelle.
Pour les mots réservés SQL, je ne sais pas s'il y a une liste directement accessible en PL/SQL, et il faudrait aussi tester en passant la colonne en majuscules pour se départir des différences de casse.
En une seule expression rationnelle, ça peut être un peu compliqué, et pas facile à maintenir.
Par contre, comme si je l'imagine, tu es dans une clause WHERE, tu peux faire plusieurs expressions reliées par des AND. Cela pourrait avoir un coût en termes de performances, à toi de voir si c'est rédhibitoire.
L'avantage également, c'est de pouvoir utiliser NOT, pour les restrictions.
En décomposant dans le même ordre que tes points :
WHERE REGEXP_LIKE (COL_NOM_SQL, '^[a-zA-Z0-9_]*$') AND NOT REGEXP_LIKE (COL_NOM_SQL, '.{129}') AND NOT REGEXP_LIKE (COL_NOM_SQL, '^[0-9]') AND COL_NOM_SQL NOT LIKE '%__%' AND COL_NOM_SQL NOT IN ('SELECT', 'WHERE')...
Pour la taille max, il y a sûrement une fonction plus simple que par expression rationnelle.
Pour les mots réservés SQL, je ne sais pas s'il y a une liste directement accessible en PL/SQL, et il faudrait aussi tester en passant la colonne en majuscules pour se départir des différences de casse.
exactement je suis dans le WHERE , et j'ai fais plusieurs conditions sur 3 lignes , dans une seule regx ce n'est pas evident ! donc voici ce que j'ai fais
Merci encore :)