openplanning

Phân tách một chuỗi ngăn cách bởi dấu phẩy và chuyển vào mệnh đề IN của câu lệnh Select trong Oracle

  1. Ví dụ

1. Ví dụ

Trong một số tình huống bạn có một chuỗi (String), chẳng hạn:
'KING,JONES,FORD'
Bạn muốn biến nó thành một câu lệnh Select và trả về kết quả giống hình minh họa dưới đây:
Với Oracle > 9, bạn có thể viết câu lệnh SQL như sau:
-- 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;
Tìm các nhân viên có tên nằm trong một String ngăn cách bởi dấu phẩy.
Select * From Employee Emp
Where
Emp.Emp_Name In ('KING','JONES','FORD');
Bạn cần kết hợp 2 câu lệnh lồng nhau:
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);
Kết quả chạy câu lệnh: