关于通过Java连接mysql对反斜杠”\“转义的测试详解
发布时间 - 2026-01-11 01:54:37 点击率:次前言

在java中,反斜杠“\”转义是“\”,因此表示一个“\”要使用“\\”,如果是正则表达式,那么表示一个“\”需要用“\\\\”,在mysql中,反斜杠转义依然是“\”,和java相同。
现在问题是:如果mysql中一个字段的内容包含反斜杠,然后通过java连接mysql去筛选这个字段所在的条目,要怎么写才能将该字段筛选出来呢?下面就是一个实验:
1,先建立测试数据:
CREATE TABLE `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
);
insert into test (name) values ('\\'), ('\\\\');
向数据库中插入2条数据,name的值分别是“\”和“\\”。
2,使用jdbc连接mysql,然后测试筛选条件:
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "root");
PreparedStatement pstmt = conn.prepareStatement("select * from test where *条件"); // “*条件”见下文
pstmt.setString(1, "*筛选值"); // “*筛选值”见下文
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
System.out.println(rs.getString("name"));
}
3,测试:
i.
*条件 为:name = ?
*筛选值 为:
“\\”可以筛选出name为“\”的数据
“\\\\”可以筛选出name为“\\”的数据
这个看起来是比较正常的
ii.
*条件 为:name like ?
*筛选值 为:
“\\”或“”\\\\可以筛选出name为“\”的数据
“\\\\\\”或“\\\\\\\\”可以筛选出name为“\\”的数据
开始不变得奇怪了…
iii.
*条件 为:name like ‘%' ?
*筛选值 为:
“\\”或“\\\\”可以筛选出name为“\”和“\\”的数据
“\\\\\\”或“\\\\\\\\”可以筛选出name为“\\”的数据
和 ii. 有点类似
iv.
*条件 为:name like ? ‘%'
*筛选值 为:
“\\\\”可以筛选出name为“\”和“\\”的数据
“\\\\\\\\”可以筛选出name为“\\”的数据
又变得好像正常了…类似正则中的转义
v.
*条件 为:name like ‘%' ? ‘%'
*筛选值 为:
“\\\\”可以筛选出name为“\”和“\\”的数据
“\\\\\\\\”可以筛选出name为“\\”的数据
和 iv. 类似了
4,分析:
使用“=”方式筛选貌似就是常规理解中的转义,但是一旦使用了“like”就开始变得奇怪了,从测试来看,使用“like”筛选有些类似正则式,不过没有使用“%”占位符的筛选中常规转义依然有效,另外,奇怪的是 ii. 和 iii. 中的6根反斜杠是个什么鬼…完全不能理解…
5,结论:
sql语句是“=”筛选时,java就使用常规转义即可
sql语句是“like”筛选时,最好使用正则式转义
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
# java
# 反斜杠转义
# mysql
# 反斜杠
# 转义
# mysql语句如何插入含单引号或反斜杠的值详解
# Python3.6-MySql中插入文件路径
# 丢失反斜杠的解决方法
# 的是
# 是个
# 奇怪了
# 问题是
# 这篇文章
# 谢谢大家
# 数据库中
# 将该
# 要使
# 需要用
# 测试数据
# 就开始
# 使用了
# 有疑问
# 正则表达式
# test
# TABLE
# id
# int
# DEFAULT
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)
Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程
Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性
百度输入法ai面板怎么关 百度输入法ai面板隐藏技巧
JS实现鼠标移上去显示图片或微信二维码
EditPlus中的正则表达式 实战(1)
香港服务器如何优化才能显著提升网站加载速度?
Laravel的Blade指令怎么自定义_创建你自己的Laravel Blade Directives
网易LOFTER官网链接 老福特网页版登录地址
简历在线制作网站免费版,如何创建个人简历?
制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?
Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】
佛山网站制作系统,佛山企业变更地址网上办理步骤?
Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程
laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法
nodejs redis 发布订阅机制封装实现方法及实例代码
如何在阿里云虚拟主机上快速搭建个人网站?
制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?
Laravel怎么在Blade中安全地输出原始HTML内容
香港服务器网站生成指南:免费资源整合与高速稳定配置方案
如何快速使用云服务器搭建个人网站?
如何为不同团队 ID 动态生成多个非值班状态按钮
如何快速启动建站代理加盟业务?
Laravel如何使用Blade模板引擎?(完整语法和示例)
Laravel如何配置中间件Middleware_Laravel自定义中间件拦截请求与权限校验【步骤】
Laravel观察者模式如何使用_Laravel Model Observer配置
如何续费美橙建站之星域名及服务?
大型企业网站制作流程,做网站需要注册公司吗?
详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
如何在IIS中配置站点IP、端口及主机头?
Laravel如何实现文件上传和存储?(本地与S3配置)
WEB开发之注册页面验证码倒计时代码的实现
Laravel如何实现API版本控制_Laravel版本化API设计方案
北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?
车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?
如何正确下载安装西数主机建站助手?
Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】
PHP怎么接收前端传的文件路径_处理文件路径参数接收方法【汇总】
*服务器网站为何频现安全漏洞?
JavaScript如何实现倒计时_时间函数如何精确控制
php485函数参数是什么意思_php485各参数详细说明【介绍】
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
如何快速搭建高效香港服务器网站?
Laravel怎么进行浏览器测试_Laravel Dusk自动化浏览器测试入门
怎么用AI帮你为初创公司进行市场定位分析?
如何为不同团队 ID 动态生成多个“认领值班”按钮
如何构建满足综合性能需求的优质建站方案?
个人摄影网站制作流程,摄影爱好者都去什么网站?
如何用景安虚拟主机手机版绑定域名建站?
Laravel怎么实现支付功能_Laravel集成支付宝微信支付

