betacode

Разделить строку запятой и передать в пункт IN команды Select в Oracle

  1. Пример

1. Пример

В некоторых случаях, у вас есть одна строка (String), например:
'KING,JONES,FORD'
Вы хотите сделать из нее команду Select и возвратить результат, как в изображении ниже:
С Oracle > 9, вы можете написать следующую команду SQL:
-- 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;
Найти сотрудников именованные в String разделенные запятыми.
Select * From Employee Emp
Where
Emp.Emp_Name In ('KING','JONES','FORD');
Вам нужно сочетать 2 сплетенные команды:
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);
Результат запуска команды: