我有一個SQL查詢連接幾個表,我想篩選記錄使用相同的LIKE條件許多列的結果集。 例如,我在我的查詢(t1,t2和t3是連接表名稱)列中有t1.Name,t1.FullName,t1.Comment,t2.Name,t3.Description等字段,我想檢查t1。名稱或t1.FullName或t1.Comment或t2.Name或t3.Description是LIKE'%sometext%'。 我只是感興趣什麼SQL會更快?相同的LIKE條件適用於許多列
WHERE t1.FullName LIKE '%sometext%' OR t1.Comment LIKE '%sometext%' OR
t2.Name LIKE '%sometext%' OR t3.Description LIKE '%sometext%'
或
WHERE ISNULL(t1.Name,'') + '|' + ISNULL(t1.FullName,'') + '|' + ISNULL(t1.Comment,'') + '|' + ISNULL(t2.Name,'') + '|' + ISNULL(t3.Description,'') LIKE '%sometext%'
或可能是有一些更快的方法? 我正在使用MS SQL Server 2008 R2。
UPD:我編輯了我的第二個查詢來處理情況,當一些字段爲NULL,並且當連接可能包含模式,但字段單獨不。
你有沒有在SSMS中運行這個估計的執行計劃? – rcdmk
can t1.name會包含'some'和t1.fullname'text'? – podiluska
如果一列結束'一些',而下一列開始'文本',則連接選項可能返回OR條件不匹配的匹配項。那是問題嗎? –