Вы делаете ложное предположение.
IN ('1,2,3,4')
очень отличается от IN (1,2,3,4)
или IN ('1', '2', '3', '4')
То, что вы делаете в настоящее время первым.Вы проверяете, есть ли название вашего отдела в списке, длина которого составляет всего one ; строка @department .Это значение содержит запятые, но это все еще одна строка, и поэтому это все еще один элемент в списке.
У вас есть два варианта.
Динамически создавайте SQL, чтобы вашlist является частью sql, а не строковым параметром.
Или найдите одну из многих функций SPLIT()
, доступных в режиме онлайн.Это тот, который я рекомендую.Затем вы можете сделать что-то вроде ...
WHERE
RTRIM(G.DeptName) IN (SELECT * FROM dbo.split(@Department))
Или, что еще лучше, присоединиться к результатам функции SPLIT()
...
yourTable AS G
INNER JOIN
dbo.split(@department) AS department
ON RTRIM(G.DeptName) = department.item