Câu hỏi này trùng lặp với một vài câu hỏi khác, nhưng một số câu trả lời được chấp nhận vẫn là các vòng lặp WHILE hoặc CTE đệ quy không hiệu quả. Có ba cách để thực hiện phân tách mà không làm giảm hiệu suất:
-
Bảng Numbers / Tally: http://www.sqlservercentral.com/articles/Tally + Bảng / 72993 / (yêu cầu đăng ký tự do)
-
XML: https://www.simple-talk.com/blogs/2012/01/05/using-xml-to-pass-lists-as-parameters-in-sql-server/
-
SQLCLR:có rất nhiều ví dụ về điều này trên nhiều trang web nhưng đặt cược tốt nhất (và dễ nhất) của bạn là lấy một cái được cung cấp trong bài viết Số / Bảng thống kê đã lưu ý ở trên HOẶC chỉ cần cài đặt SQL#(SQLsharp) (Tôi là tác giả của SQL # nhưng String_Split và String_Split4k ở phiên bản Miễn phí).