您的位置:首页 > 数据库 > MySQL

Mysql 特殊字符转义问题

2016-05-03 14:22 302 查看
在公司fix一个小bug的时候遇到一个问题:用户在Delivery Address中输入一些关键字,点击Search,结果会显示对用户的输入进行模糊匹配的所有Address.正常情况不说了,说一下用户输入中假如包含mysql的特殊字符(% \ ' _)怎么处理。在后台,sql查询语句是拼接而成的语句的:
params.getAddress()得到的就是用户在Delivery Address中输入一些关键字,怎么把用户输入的特殊字符转义好之后,拼接到sql语句中,真是困扰了我好几天,例如输入  \\  %' 等,查询了好多资料才找到我想要的。先看一下我DomainUtil.escapeSpecialChar()方法是怎么写的:
对用户输入的字符串放入数组中,挨个进行判断,如果是特殊字符,就在特殊字符的前面加上反斜线(\)进行转义,最关键的是用户输入的是反斜线,怎么转义。
我之前用的是repalceAll()这个函数,后来查到repalceAll()是以正则表达式作为参数的,而我只是普通的字符替换,所以又来用replace()函数。
在转义\时,在查阅资料后,是这么写的
为设么要这么多的反斜线呢,一个反斜线需要四个反斜线来转义(具体为什么是这样我现在还不是特别明白)。附上一篇网址,对正斜杠(/)与反斜杠(\)的详细说明,讲的挺详细。网址:/article/8273395.html
另外附上一些查询特殊字符的sql语句:

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: