SQL Server будет пытаться неявно преобразовывать строки в числа всякий раз, когда вы сравниваете, перемещаете или объединяете число в строку.Чтобы избежать этого, вы должны явно преобразовать число в строку:
WHERE MyId = 1
AND
(
MyRef = @Search
OR MyName LIKE N'%' + CAST(@Search as varchar(11)) + N'%'
)
Я использую varchar(11)
, потому что он достаточно большой, чтобы содержать минимальное значение int
, включая знак минус.Если число относится к другому типу, вы можете выбрать другой размер.
Я также немного изменил ваши условия - нет смысла иметь одно и то же условие несколько раз, а также, этоВсегда полезно использовать круглые скобки при объединении and
и or
в одном и том же предложении where
.