Mysql 特殊字符转义问题

      在公司fix一个小bug的时候遇到一个问题:

Mysql 特殊字符转义问题_第1张图片

用户在Delivery Address中输入一些关键字,点击Search,结果会显示对用户的输入进行模糊匹配的所有Address.正常情况不说了,说一下用户输入中假如包含mysql的特殊字符(% \ ' _)怎么处理。

    在后台,sql查询语句是拼接而成的语句的:



params.getAddress()得到的就是用户在Delivery Address中输入一些关键字,怎么把用户输入的特殊字符转义好之后,拼接到sql语句中,真是困扰了我好几天,例如输入  \\  %' 等,查询了好多资料才找到我想要的。先看一下我DomainUtil.escapeSpecialChar()方法是怎么写的

对用户输入的字符串放入数组中,挨个进行判断,如果是特殊字符,就在特殊字符的前面加上反斜线(\)进行转义,最关键的是用户输入的是反斜线,怎么转义。
我之前用的是repalceAll()这个函数,后来查到repalceAll()是以正则表达式作为参数的,而我只是普通的字符替换,所以又来用replace()函数。
在转义\时,在查阅资料后,是这么写的
为设么要这么多的反斜线呢,一个反斜线需要四个反斜线来转义(具体为什么是这样我现在还不是特别明白)。附上一篇网址,对正斜杠(/)与反斜杠(\)的详细说明,讲的挺详细。网址:http://blog.csdn.net/north_easter/article/details/7904865
另外附上一些查询特殊字符的sql语句:

你可能感兴趣的:(Mysql 特殊字符转义问题)