Đối với SQL-Server, có hai cách tiếp cận phổ biến cho việc này. Tùy chọn thứ ba cần tránh là chuyển vào một varchar
và nối nó vào một câu lệnh SQL động với IN
- đây là một bề mặt tấn công tiêm rõ ràng.
Các lựa chọn hợp lý:
-
chuyển vào một
varchar
và sử dụng UDF để chia nhỏ dữ liệu trên dấu phân cách ( thích trong câu hỏi này ), có thể là dấu phẩy, dấu gạch ngang, tab, v.v. Tham gia vào kết quả:SELECT something, anotherthing FROM atable a INNER JOIN dbo.SplitUDF(@values) udf ON udf.Value = a.something
- sử dụng tham số bảng giá trị (SQL2008) và tham gia trực tiếp (tránh UDF)