Пара мыслей для тебя ...
Если у вас есть '%' @selctDescription '%'
, вам просто нужно +
между строками, чтобы объединить их. Ваш код будет работать как есть.
'%' + @selctDescription + '%'
1012 *
*
Также полезно отметить, что вам даже не нужен оператор CASE
, так как, когда параметр пуст, вы получаете '%%'
, который все равно будет соответствовать всему.
Это полезно знать, потому что в настоящее время у вас есть поля таблицы по обе стороны от оператора LIKE
. Это действительно повредит оптимизатору. Если бы я использовал CASE, у меня было бы больше искушения придерживаться ...
t.[description] LIKE (CASE WHEN @selctDescription = '' THEN '%' ELSE ('%' + @selctDescription + '%') END)
Преимущество состоит в том, что результат оператора CASE может быть выполнен один раз в виде скалярного значения до выполнения запроса. В отличие от пересчета когда-либо строки.
И, тем не менее, оно становится функционально идентичным ...
t.[description] LIKE ('%' + @selctDescription + '%')