Мне интересно, почему эти два следующих условия в SQL возвращают разные результаты
Первое состояние
Я пишу запрос следующим образом:
DECLARE @idUser VARCHAR(MAX)
SELECT @idUser = COALESCE(@idUser+', ' , '') + CAST(idUser as VARCHAR(MAX))
FROM webuser
WHERE username IN ('John', 'Tom')
И он возвращает идентификатор пользователя для каждого имени пользователя, ниже выводится
1020, 1021
Второе условие
Я пишу еще один запрос. Имя пользователя уже задано в качестве параметра, и это фактически то, что мне нужно, имя пользователя задано в качестве параметра, ниже используется запрос:
DECLARE @username VARCHAR(MAX)
SET @username = '''John'', ''Tom'''
DECLARE @idUser VARCHAR(MAX)
SELECT @idUser = COALESCE(@idUser+', ' , '') + CAST(idUser as VARCHAR(MAX))
FROM webuser
WHERE username IN (@username)
И в результате возвращается NULL
значение.
Я ожидаю, что два запроса вернут один и тот же результат, я думаю, что это что-то в цитате в @username
, я сделал это неправильно или у вас, ребята, есть какое-то объяснение и решение для этого случая?