Bonjour,
J'aimerais savoir si on peut gérer les expressions régulières dans Oracle ?
Cordialement,
Nico
Bonjour,
J'aimerais savoir si on peut gérer les expressions régulières dans Oracle ?
Cordialement,
Nico
Bonjour,
A partir d'Oracle 10g oui, par exemple http://www.oracle.com/technology/obe...exp/regexp.htm
Avant la 10g, il y a parfois moyen de s'en sortir autrement.
Qu'est-ce-que tu souhaites faire exactement ?
Laly.
Oui, d'ailleurs il y a un example dans la FAQ Oracle
http://oracle.developpez.com/faq/?page=12#chaineformat
Il y a un article nouvellement paru sur un blog sur cette question
http://technology.amis.nl/blog/?p=1258
Merci,Envoyé par lalystar
En fait, j'ai deux problèmes :
La première chose est que je dispose d'une table avec 4 champs, et je veux en faire une table avec 2 champs. Le premier champ, aucun problème, mais dans les 3 champs suivants se trouvent les données dont j'ai besoin. Ces données sont dans un des 3 champs et dans les deux autres champs j'ai d'autres données qui ne m'intéresse pas. Déjà à ce niveau je sais pas trop comment faire en SQL
Dans un deuxième temps, dans la mesure où la donnée dont j'ai besoin a toujours la même structure, pour chaque ligne de la table je dois analyser le contenu des 3 champs, et dès lors que j'ai trouvé la donnée dont j'ai besoin, je l'insère dans la nouvelle table.
En PHP cela ne pose aucun problème, mais je dois réaliser ce traitement uniquement par Oracle8i (V 8.1.7.4.0 ).
Merci pour votre aide,
Nico
La version 8i ne gère t-elle pas les expressions régulières ?
si tu veux faire de l'expression régulière entre une table A et une table B pourquoi ne pas exporter dans un fichier et mouliner ailleurs dans un endroit qui comprend [*,[nimportekoi}&lereste] et réimporter ensuite dans ta table B? Ou alors SQL*Loader (expressions trés trés régulières...)
Merci pour ta réponse,
Faire la moulinette dans un autre endroit implique de sortir du contexte de la base, or je dois réaliser ce traitement de manière totalement autonome, car l'appli est destiné à un public qui ne connait pas le SQL, il faut donc que tout se passe dans mon fichier SQL.
Le soucis, c'est que je découvre Oracle, je ne suis qu'un "MySQL-iste", j'ai donc beaucoup de lacunes sous Oracle... Dans tous les cas je vais expliquer mon problème de manière peut-être plus simple que lors de mon dernier post, qui n'a pas déchainé les internautes (le week end porte conseil ).
On va dire que j'ai une table avec 4 champs comme suit :
ticket | iden1 | iden2 | iden3
-------------------------------------------------
0123 | 0102 | V1255 |
0456 | | 5685 |
0789 | V4586 | | 6374
Je veux en faire une table avec deux champs, comme suit :
ticket | iden1
------------------
0123 | 0102
0456 | 5685
0789 | 6374
En fait les données qui se trouvent dans les champs idenX et dont j'ai besoin ont toujours la même structure, je peux donc par une règle d'expressions régulières les retrouver, et ensuite l'insérer dans la nouvelle table
Je pense que cette explication est plus claire, en espérent que vous puissiez m'aider.
@+
Nico
Bonjour,
Je ne suis pas sur d'avoir compris la règle qui permet de choisir la donnée de la seconde colonne : dans les champs idenX, tu prends la donnée qui ne commence pas par V ou à défaut la donnée non nulle ?
Si c'est ca, ca me semble simple à faire et sans expression régulière.
Tu peux expliciter ta facon de choisir les données ?
Laly.
Peux-tu préciser les règles que tu dois mettre en oeuvre, j'ai déjà simulé les expressions régulières avec des TRANSLATE, mais on ne peut pas tout faire ainsi...
En fait je ne prend que les données qui ne commencent pas par V, et qui ne sont pas nulles, je prends en fait tout ce qui a 4 chiffres
Merci
Nico
WHERE TRANSLATE (laChaine, '0123456789', '0000000000') = '0000'
Merci,
En fait tu testes si la chaine est une chaine numérique ?, mais pourquoi = '0000' ?
Nico
Parce que tu as demandé :Envoyé par nicocolt
je prends en fait tout ce qui a 4 chiffres
Ben oui, c'est évident......
Et dans le cas ou tu recherches des chiffres, par exemple 4 suivi de 3 lettres, avec TRANSLATE c'est faisable également ?
Nico
Je ne suis pas certain d'avoir compris la question, si tu veux 4 chiffres suivis de 3 lettres majuscules ('568JHJ' par exemple) l'idée est la même :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 TRANSLATE (laChaine, '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ', '0000000000AAAAAAAAAAAAAAAAAAAAAAAAAA') = '0000AAA'
C'est tout à fait ça, en fait TRANSLATE réalise un peu de la même manière ce que font les fonctions pour les expressions régulières.
Nico
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager