對於一列可樂爲VARCHAR(x)的一個表,我應該怎麼改寫這個條件凡在空列,方含LIKE子句,保持索引的使用
ColA LIKE @param + '%'
考慮到:
- 1/ColA無效。
- 2/@參數可以是NULL
- 3 /上有可樂的指標,它應該被用於所有的搜索
- 4 /避免sp_executesql的,因爲這是大得多的存儲過程的一部分
那時我在想:
ISNULL(ColA, '') LIKE (CASE WHEN @param IS NULL THEN '%' ELSE @param + '%' END)
,但這將不會使用在可樂定義的索引。
如果@參數爲空,應行,其中可樂空是回?也就是說應該將空值視爲「相等」? – Bohemian
@Bohemian:是的,NULL應該被認爲是「相等的」 – user3104183
「ColA有一個索引,它應該用於所有搜索」 - 好吧,它不會。具有前導通配符的LIKE條件可以不使用索引。 –