SQL模糊查询通配符_和%处理 -宏鹏
Access软件网QQ交流学习群(群号码198465573),欢迎您的加入!
首页 >技术文章> ADP及SQL SERVER


SQL模糊查询通配符_和%处理

发表时间:2018/8/29 8:28:34 评论(0) 浏览(13221)  评论 | 加入收藏 | 复制
   
摘 要:SQL模糊查询通配符_和%处理 
正 文:

下划线和百分号在sql模糊查询like语句中为特殊字符,分别可匹配1个字符和0到多个字符,如果需要真正查询特殊字符得转义,如like 'a\_b%' escape '\',将匹配前3个字符为a_b的所有记录。

1、PreparedStatement处理

普遍做法,拼sql时使用like ?,左模糊在查询条件字符串左侧添加%,右模糊在查询条件字符串右侧添加%,对特殊字符进行预先转义

condition = condition.replaceAll("_", "\\\\_");

condition = condition.replaceAll("%", "\\\\%");

ps.setString(idx, "%" + conditon + "%")

为什么replaceAll中需要使用4个\可参考jdk源码Matcher.appendReplacement方法。

专业做法,拼sql时使用like ? escape '\'(java中使用两个\\)

2、多数据库支持处理

在postgres中escape需要使用'\\'(java中使用四个\\)处理

3、其他思考

查找数据库是否有配置模糊查询的默认转义字符,搜索未果,可能关键字抽取有问题,试图在oracle的v$parameter中查找会话相关参数但是没有收获。


建议处理方式:在sql中like后添加escape,但是不对原始输入条件进行转换,用户可在查询条件中使用转义字符查询特殊字符也可以进行中间模糊查询,如输入'a%b','a\%b'。


Access软件网交流QQ群(群号:198465573)
 
 相关文章
SQL 语句中的通配符  【jimcloudy整理  2007/11/21】
Access中使用like通配符  【风行  2011/3/15】
access中like通配符的含义  【宏鹏  2012/3/5】
通配符的注意事项  【杜威  2013/12/2】
不使用通配符查询包含某个数据的记录  【杨雪  2017/5/23】
常见问答
技术分类
相关资源
文章搜索
关于作者

宏鹏

文章分类

文章存档

友情链接