Используя SQL Server, у меня есть хранимая процедура, которую я хочу сделать необязательным для поиска строк.
@search
- это параметр.Если @search
имеет значение, я хочу найти строку, в противном случае, если оно пустое, оно должно обойти поиск.
Я просто хотел узнать ваши мысли об оптимальном способе написания необязательного поиска строки вГДЕ.
Прямо сейчас у меня это как
AND (@search = '' OR [t4].number like '%'+@search+'%')
Но я не смог выяснить, оценивает ли подобное, даже если @search = ''
истинно
Если он по-прежнему сравнивает обе стороны ИЛИ, то я подумал об использовании этого
AND (CASE WHEN @search = '' THEN 1
ELSE (CASE WHEN [t4].number like '%'+@search+'%' THEN 1
ELSE 0 END) END) = 1
Редактировать: я провел пару тестов, и похоже, что случай меньше читает.