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

Hãy theo dõi chúng tôi trên Fanpage để nhận được thông báo mỗi khi có bài viết mới. Facebook

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:
Có thể bạn quan tâm

Đây là các khóa học trực tuyến bên ngoài website o7planning mà chúng tôi giới thiệu, nó có thể bao gồm các khóa học miễn phí hoặc giảm giá.