2012-08-08 30 views
1

我已經在sql server 2005中編寫了一個存儲過程來搜索結果。'%%'拋出結果

SP

SELECT RTRIM(DEPT_DESC) DEPT_DESC, RTRIM(DEPT_ID) DEPT_ID 
FROM T_ROLLUP_DEPT 
WHERE DEPT_ID like @SearchText + '%' OR DEPT_DESC like '%%' 

我加入了 '%%',以幫助它的列中進行搜索。

即如果我們正在尋找醫療控制器,它將允許我們鍵入'CONTRO',它會產生結果醫療控制器。

但是,這也造成了一些麻煩。看來,如果我正在通過dept_id進行搜索並鍵入'2',它會顯示所有結果。不僅是以2開頭的部門ID。同樣,如果我鍵入一串隨機數,它也會返回所有結果。

任何人都知道爲什麼以及如何解決這個問題?

回答

1

這好像是說.. OR 1 = 1 ..有任何搜索輸入它不返回所有結果? (我懷疑不是)

也許它應該是.. OR DEPT_DESC like '%' + @SearchText + '%'而不是?當DEPT_DESC包含搜索文本將匹配..

其實,這相當於該LIKE '%%'.. OR DEPT_DESC IS NOT NULL將每一個非空的字符串相匹配。

+0

有趣。謝謝你澄清。我把它運行到一個自動完成,所以我沒有注意到它實際上選擇了一切。謝謝你的提示 – user1512593 2012-08-08 18:58:16

相關問題