私は使うだろう
WHERE columnName LIKE '%[%]%'
LIKE
SQL Server は、句に一致する行数の見積もりに使用する文字列の要約統計を格納します。角かっこの構文を使用すると、カーディナリティの見積もりがより適切になり、より適切な計画につながる可能性があります。
この Connect Itemへの応答は次のように述べています
ユーザー定義のエスケープ文字が存在する場合、正確なカーディナリティの推定はサポートされていません。そのため、お粗末な見積もりと粗末な計画が得られる可能性があります。今後のリリースでこの問題に対処することを検討します。
例
CREATE TABLE T
(
X VARCHAR(50),
Y CHAR(2000) NULL
)
CREATE NONCLUSTERED INDEX IX ON T(X)
INSERT INTO T (X)
SELECT TOP (5) '10% off'
FROM master..spt_values
UNION ALL
SELECT TOP (100000) 'blah'
FROM master..spt_values v1, master..spt_values v2
SET STATISTICS IO ON;
SELECT *
FROM T
WHERE X LIKE '%[%]%'
SELECT *
FROM T
WHERE X LIKE '%\%%' ESCAPE '\'
最初のクエリでは 457 の論理読み取りが表示され、2 番目のクエリでは 33,335 が表示されます。