Table des matières
Séparer les chaînes séparées par des virgules et passer à la clause IN de l'instruction select dans Oracle
View more Tutorials:


Dans certaines situations, vous avez une chaine (String), par exemple :
'KING,JONES,FORD'
Vous voulez le transformer en une instruction Select et recevoir des résultats comme l'illustration ci-dessous :

Avec Oracle > 9, vous pouvez écrire la requête SQL comme ci-dessous :
-- ORACLE > 9.x
Select Regexp_Substr('KING,JONES,FORD'
,'[^,]+'
,1
,Level) Emp_Name
From Dual
Connect By Regexp_Substr('KING,JONES,FORD'
,'[^,]+'
,1
,Level) Is Not Null;
Cherchez les employés nommés dans une chaine séparée par la virgule.
Select * From Employee Emp
Where
Emp.Emp_Name In ('KING','JONES','FORD');
Vous devez combiner deux instructions imbriquées :
Select *
From Employee Emp
Where Emp.Emp_Name In
(Select Regexp_Substr('KING,JONES,FORD'
,'[^,]+'
,1
,Level) Emp_Name
From Dual
Connect By Regexp_Substr('KING,JONES,FORD'
,'[^,]+'
,1
,Level) Is Not Null);
Les résultats de l'exécution de l'instruction :
