{Oracle} Expression regulière

Résolu/Fermé
0866 Messages postés 31 Date d'inscription jeudi 11 juin 2009 Statut Membre Dernière intervention 24 mars 2010 - 12 juin 2009 à 15:25
0866 Messages postés 31 Date d'inscription jeudi 11 juin 2009 Statut Membre Dernière intervention 24 mars 2010 - 15 juin 2009 à 17:30
Bonjour,

j veux faire une expression régulière sous oracle(SQL) qui peut:
- valider un numéro ou un réel (INTEGER or FLOAT),
- ce numéro (ou réel) doit être borné ( dans un intervalle qui va être donner par l'utilisateur),
- de plus dans cette expression les nombres des chiffres avant/après le virgule doit être dynamique ( donner par un utilisateur).
mon problème consiste dans la dernier point ; j'arrive pas résoudre.

voici mon essai : '^'||v_min||'$|^[1-4]{0,1}\d{1}(.\d{1,2})?$|^'||v_max||'$'

avec v_min et v_max : deux variables dynamiques.

SVP est ce qu'il y a quelqu'un que peut m'aider? c 'est urgent!!!

Merci d'avance ,
cordialement.

1 réponse

0866 Messages postés 31 Date d'inscription jeudi 11 juin 2009 Statut Membre Dernière intervention 24 mars 2010 3
15 juin 2009 à 17:30
j'ai trouver la solution ;

voici la solution:
on ajout cette ligne dans un trigger :

REGEXP_LIKE(:new.NomChamp,'^\d{0,'||v_DSize||'}(.\d{0,'||v_ESize||'})?$')
AND ((:new.NomChamp = v_min)OR(:new.NomChamp > v_min))
AND ((:new.NomChamp = v_max)OR(:new.NomChamp < v_max));

avec v_ESize et v_DSize : représente le nombre des chiffres avant et après la virgule
0