like
и =
эквивалентны в вашей ситуации, поскольку вы работаете с текстовыми значениями (char, nchar, varchar, nvarchar).
Вместо
WHERE country = @place
1008 * попробовать *
WHERE country like @place
Для набора переменных попробуйте
Вместо
set @place='US'
Попробуйте
set @country = isnull('''US''','''%''')
Чтобы проверить это:
declare @country nvarchar(50)
set @country = isnull('''US''','''%''')
print @Country
set @country = isnull(NULL,'''%''')
print @Country
Дополнительные кавычки необходимы, потому что в вашем примере вы используете явные значения - '
является escape-символом, и вам нужно использовать одинарную кавычку вокруг каждого значения, чтобы указать, что это НЕ столбец таблицы. Если бы вы использовали COLUMN_NAME, вы бы просто использовали одинарную кавычку вокруг символа%.
В зависимости от версии SQL вам может потребоваться использовать другой символ подстановки.
Это довольно прямое и линейное решение, хотя есть риски, связанные с открытыми переменными.