Tôi thường có yêu cầu này và SOMETIME, nếu bạn biết rõ cột bạn đang tìm kiếm [kích thước/định dạng/độ dài], bạn có thể thực hiện một loại REGEX.
Something như thế này:
DECLARE @MyListOfLocation varchar(255)
set @MyListOfLocation = '|1|32|36|24|3|'
Select LocationID
from Table
where @MyListOfLocation like '%|' + LocationID + '|%'
LƯU Ý: nhân vật PIPE được sử dụng để bảo vệ các truy vấn từ trả lại bất kỳ LocationID có chứa một ký tự đơn (các '1', ví dụ).
Dưới đây là một ví dụ làm việc hoàn chỉnh:
DECLARE @MyListOfLocation varchar(255)
set @MyListOfLocation = '|1|11|21|'
SELECT LocationName
FROM (
select '1' as LocationID, 'My Location 1' as LocationName
union all
select '11' as LocationID, 'My Location 11' as LocationName
union all
select '12' as LocationID, 'My Location 12' as LocationName
union all
select '13' as LocationID, 'My Location 13' as LocationName
union all
select '21' as LocationID, 'My Location 21' as LocationName
) as MySub
where @MyListOfLocation like '%|' + LocationID + '|%'
CẢNH BÁO! Phương pháp này không thân thiện với Index!
Nếu bạn muốn làm thêm một số IN (@MyListOfLocation) trong tất cả những gì, để thúc đẩy sử dụng các chỉ số, bạn có thể sửa đổi kịch bản của bạn làm gì để:
SELECT MyDATA.*
FROM HugeTableWithAnIndexOnLocationID as MyDATA
WHERE LocationID in (
Select LocationID
from Table
where @MyListOfLocation like '%|' + LocationID + '|%')
thể trùng lặp của [SQL Server SP - Vượt qua tham số cho danh sách mảng "IN"?] (http://stackoverflow.com/questions/537087/sql-server-sp-pass-parameter-for-in-array-list) – Lamak
Bạn đã cân nhắc sử dụng [Tham số giá trị bảng ] (http://msdn.microsoft.com/en-us/library/bb510489.aspx) thay thế. Nó sẽ làm cho nó 'chọn Địa điểm từ bảng nơi Vị tríID trong (Chọn Vị trí từ @LocationList)' –