我在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。另外,如果我输入一堆随机数,它也会返回所有结果。
任何人都知道为什么以及如何解决这个问题?
答案 0 :(得分:1)
这就像说.. OR 1 = 1
1 ..是否有任何搜索输入,它不会返回所有结果? (我怀疑不是。)
也许它应该是.. OR DEPT_DESC like '%' + @SearchText + '%'
而已?当DEPT_DESC
包含搜索文本时,这将匹配..
1 实际上,它等同于.. OR DEPT_DESC IS NOT NULL
,LIKE '%%'
将匹配每个非NULL字符串。