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 '%%' 

我添加了“%%”来帮助它在列中搜索。

即,如果我们正在搜索 Medical Controller,它将允许我们键入“CONTRO”,它会产生结果 Medical Controller。

然而,这也引起了一些头痛。似乎如果我按 dept_id 搜索并输入“2”,它会显示所有结果。不仅是以 2 开头的部门 ID。此外,如果我输入一堆随机数,它也会返回所有结果。

任何人都知道为什么以及如何解决这个问题?

4

1 回答 1

1

这就像说.. OR 1 = 11 .. 是否有任何搜索输入不返回所有结果?(我怀疑不是。)

也许应该.. OR DEPT_DESC like '%' + @SearchText + '%'改为?包含搜索文本时将匹配DEPT_DESC..

1其实相当于说.. OR DEPT_DESC IS NOT NULLin thatLIKE '%%'会匹配每一个非NULL字符串。

于 2012-08-08T18:53:17.917 回答