' %%'扔掉结果

时间:2012-08-08 18:41:30

标签: sql-server-2005 stored-procedures autocomplete

我在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 个答案:

答案 0 :(得分:1)

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

也许它应该是.. OR DEPT_DESC like '%' + @SearchText + '%'而已?当DEPT_DESC包含搜索文本时,这将匹配..

1 实际上,它等同于.. OR DEPT_DESC IS NOT NULLLIKE '%%'将匹配每个非NULL字符串。