Bonjour,

J'utilise la fonction regexp_like dans une requête SQL pour rechercher dans une table des lignes dont un champ a une certaine forme. Cela marche bien.
Ex:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
Table T_FORET(ESPECE varchar2(50), APPELLATION varchar2(80)) (('platane', 'Arbre platane'), ('platane jaune', 'Arbre platane jaune'), ('assimilé platane', 'Arbre assimilé platane'), ('chene(noble)', 'Arbre chene(noble)'))...
 
select * from T_FORET where regexp_like (APPELLATION , 'platane');
Ca marche bien et je retrouve mes platanes.

Je complexifie en utilisant un champ dans l'expression régulière. Je veux que l'appellation commence par "Arbre", suivi de l'ESPECE
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
select * from t_foret where regexp_like (APPELLATION , '^Arbre '||ESPECE );
Et là pour les platanes ça marche mais pas pour le 'chene(noble)' car la parenthèse "(" dans le champ ESPECE est interprété par la fonction regexp_like.

Pour une seule lettre je peux utiliser le "\" pour éviter l'interprétation et prendre un "(" littéralement en cherchant "\(".
Ma question est:
Dans l'expression régulière '^Arbre '||ESPECE y-a-t-il moyen que le champ ESPECE ne soit pas traité par regexp_like comme expression régulière mais comme un littéral non interprété ?
J'ai essayé de l'enclore avec des ", ', { à tout hasard mais en vain.

Si cela parle à quelqu'un...
Pozzo