搜索oracle数据库时应该排除哪些字符?

时间:2014-11-19 03:44:55

标签: sql oracle

我的SQL语句就像这样

SELECT * FROM order WHERE clientname LIKE UPPER(?)

在Java代码中,我写了

prepStatement.setObject(1,"%"+  userinput +"%")

我想知道如何处理特殊字符?某些字符,例如'%$ {} [],*',是否应将它们全部排除或阻止用于搜索?

1 个答案:

答案 0 :(得分:1)

LIKE运算符将任何%或_字符解释为通配符,因此如果要停止解释用户输入的字符,则需要使用转义字符,例如:

SELECT * FROM order WHERE clientname LIKE UPPER(?) ESCAPE '/'

然后使用类似的东西来逃避用户的输入(抱歉,我不是Java大师所以这可能需要一些调整):

prepStatement.setObject(1,"%"+ userinput.ReplaceAll("%","/%").ReplaceAll("_","/_") +"%")