Для таблицы с колонкой КОЛ, как VARCHAR (х), как я должен переписать это условиеИНЕК на NULLABLE столбцов, с указанной LIKE, продолжайте использование индекса
ColA LIKE @param + '%'
, принимая во внимание, что:
- 1/ColA - NULLable.
- 2/@param может быть NULL
- 3/Существует индекс по COLA, и она должна быть использована для всех поисков
- 4/Избегайте sp_executesql, так как это является частью гораздо большей хранимой процедуры
Я думал на:
ISNULL(ColA, '') LIKE (CASE WHEN @param IS NULL THEN '%' ELSE @param + '%' END)
, но это не будет использовать индекс, определенный на COLA.
Если @param имеет нулевое значение, должны строки, где КОЛА является нулевой быть вернулся? То есть, следует считать «равным»? – Bohemian
@Bohemian: да, NULL следует считать «равными» – user3104183
«В ColA есть индекс, и он должен использоваться для всех поисков» - ну, этого не будет. Условие 'LIKE' с личным шаблоном может * не использовать индекс. –