Mục lục

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

Xem thêm các chuyên mục:

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:

Xem thêm các chuyên mục: