1

結果を検索するストアドプロシージャをSQLServer2005で作成しました。

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」と入力すると、MedicalControllerという結果が得られます。

しかし、これはまたいくつかの頭痛の種を引き起こしました。dept_idで検索して「2」と入力すると、すべての結果が表示されるようです。2で始まる部門IDだけでなく、一連の乱数を入力すると、すべての結果が返されます。

なぜ、そしてどのようにこれを修正できるのか誰もが知っていますか?

4

1 に答える 1

1

これは、.. OR 1 = 11 ..すべての結果を返さない検索入力はありますか?(私はそうは思わない。)

.. OR DEPT_DESC like '%' + @SearchText + '%'おそらくそれは代わりにすべきですか?DEPT_DESCこれは、検索テキストが含まれている場合に一致します。

1実際には、 NULL以外のすべての文字列に一致すると言うのと同じ.. OR DEPT_DESC IS NOT NULLです。LIKE '%%'

于 2012-08-08T18:53:17.917 に答える