我的SQL语句就像这样
SELECT * FROM order WHERE clientname LIKE UPPER(?)
在Java代码中,我写了
prepStatement.setObject(1,"%"+ userinput +"%")
我想知道如何处理特殊字符?某些字符,例如'%$ {} [],*',是否应将它们全部排除或阻止用于搜索?
答案 0 :(得分:1)
LIKE运算符将任何%或_字符解释为通配符,因此如果要停止解释用户输入的字符,则需要使用转义字符,例如:
SELECT * FROM order WHERE clientname LIKE UPPER(?) ESCAPE '/'
然后使用类似的东西来逃避用户的输入(抱歉,我不是Java大师所以这可能需要一些调整):
prepStatement.setObject(1,"%"+ userinput.ReplaceAll("%","/%").ReplaceAll("_","/_") +"%")