首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >MySQL 中的反斜杠 \\,真是太坑了!!

MySQL 中的反斜杠 \\,真是太坑了!!

作者头像
用户2242639
发布于 2021-08-20 06:57:43
发布于 2021-08-20 06:57:43
2.2K00
代码可运行
举报
文章被收录于专栏:Java经验总结Java经验总结
运行总次数:0
代码可运行

来源:https://blog.csdn.net/qq_39390545/article/details/117296607

MySQL中有很多特殊符号都是相当恶心的,比如字符串中有单引号(')、双引号(")、反斜杠(\)等等,同学们可以先脑补一下可能会出现啥问题?

在我们平时操作SQL中,一不注意这些符号就会给你背上一口锅。

你还别不信,听叔一句劝,这里的水很深,有些东西,你把握不住…《潘嘎之交》好了,今天咱们就一起针对最膈应人的反斜杠(\),来看看都有哪些坑。

一、INSERT语句中有反斜杠(\)

1、实际测试

咱们用下面这些SQL来测试一下反斜杠(\)在INSERT语句中会是啥样?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
INSERT INTO `demo0526` (`id`, `text`) VALUES (null, 'D:\陈哈哈\加班');
INSERT INTO `demo0526` (`id`, `text`) VALUES (null, 'D:\\陈哈哈\\加班');
INSERT INTO `demo0526` (`id`, `text`) VALUES (null, 'D:\\\陈哈哈\\\加班');
INSERT INTO `demo0526` (`id`, `text`) VALUES (null, 'D:\\\\陈哈哈\\\\加班');
INSERT INTO `demo0526` (`id`, `text`) VALUES (null, 'D:\\\\\陈哈哈\\\\\加班');

插入后的结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> select * from demo0526;
+----+-----------------------+
| id | text                  |
+----+-----------------------+
|  1 | D:陈哈哈加班          |
|  2 | D:\陈哈哈\加班        |
|  3 | D:\陈哈哈\加班        |
|  4 | D:\\陈哈哈\\加班      |
|  5 | D:\\陈哈哈\\加班      |
+----+-----------------------+
5 rows in set (0.00 sec)

我们发现结果如下:

当字符串中有1个反斜杠,插入后算0个。

当字符串中有2个反斜杠,插入后算1个。

当字符串中有3个反斜杠,插入后算1个。

当字符串中有4个反斜杠,插入后算2个。

当字符串中有5个反斜杠,插入后算2个。

2、是啥原理?

后来发现,原因其实很简单,在MySQL中,反斜杠在字符串中是属于转义字符,经过语法解析器解析时会进行一次转义,所以当我们insert反斜杠(\)字符时,如 insert “\” 在数据库中最终只会存储"",第一个反斜杠(\)被当做转义字符处理。

同理,像这种 D:\陈哈哈\加班 字符串,语法解析器解析到第三个反斜杠(\)时,又会把它当做下一个转义字符进行处理,因此D:\陈哈哈\加班入库后变成了D:\陈哈哈\加班。

所以我们在代码中处理插入语句碰到反斜杠时,注意\是否已经改成\,否则入库后字符串会不一致。

二、SELECT查询反斜杠(\)

1、实际测试

我们还是沿用上面的表数据,直接用like模糊匹配来测试一下。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> select * from demo0526;
+----+-----------------------+
| id | text                  |
+----+-----------------------+
|  1 | D:陈哈哈加班          |
|  2 | D:\陈哈哈\加班        |
|  3 | D:\陈哈哈\加班        |
|  4 | D:\\陈哈哈\\加班      |
|  5 | D:\\陈哈哈\\加班      |
+----+-----------------------+

我们先用单个反斜杠和两个反斜杠看看能查到啥玩意儿

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> SELECT * from demo0526 where text like '%\%';
Empty set (0.00 sec)

mysql> SELECT * from demo0526 where text like '%\\%';
Empty set (0.00 sec)

啊!!我们用like '%%'、like '%%'查询后发现都查不到数据,纳尼?上面的我白学了吗?另外,MySQL 面试题和答案都整理完了,微信搜索Java技术栈,在后台发送关键字:面试。

别着急,我会告诉你SELECT语句中四个反斜杠(\)代表一个么?呀,我赶快换成like '%\%'试一试。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> SELECT * from demo0526 where text like '%\\\\%';
+----+-----------------------+
| id | text                  |
+----+-----------------------+
|  2 | D:\陈哈哈\加班        |
|  3 | D:\陈哈哈\加班        |
|  4 | D:\\陈哈哈\\加班      |
|  5 | D:\\陈哈哈\\加班      |
+----+-----------------------+
4 rows in set (0.00 sec)

喔?那我如果查询表中带有两个反斜杠(\)的数据,岂不是要like八个。。。。别拦我,我看看tm是谁设计的这规则。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> SELECT * from demo0526 where text like '%\\\\\\\\%';
+----+-----------------------+
| id | text                  |
+----+-----------------------+
|  4 | D:\\陈哈哈\\加班      |
|  5 | D:\\陈哈哈\\加班      |
+----+-----------------------+
2 rows in set (0.00 sec)
2、又是啥原理?

原来在mysql的like语法中,like后边的字符串除了会在语法解析时转义一次外,还会在正则匹配时进行第二次的转义。因此如果期望最终匹配到"",就要反转义两次,也就是由"\"到""再到""。

如果是普通的精确查询(=),则无需第二次的正则转义,和INSERT语句一样。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> SELECT * from demo0526 where text = '\\\\';
+----+------+
| id | text |
+----+------+
|  7 | \\   |
+----+------+
1 row in set (0.00 sec)

总结

好了,看到这里同学们有什么感受呢?是不是发现MySQL中还是存在很多不方便的语法,进步空间还很大呀~~

在日常工作中,也会经常碰到这种符号引发的问题,尤其是用户在界面填写的数据,建议要做相关限定,明确哪些符号不允许。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-08-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java经验总结 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【NVIDIA AGX Orin开发教程4】安装DeepStream
在前面安装Orion开发套件的开发环境过程,并没有将DeepStream智能分析套件安装进去,因此需要独立的过程去安装,这里提供三种安装方式给使用者参考。
GPUS Lady
2022/08/16
2.2K0
【NVIDIA AGX Orin开发教程4】安装DeepStream
在Jetson上玩转大模型Day2:环境搭建
由NVIDIA资深工程师DustinFranklin为Jetson设备所搭建的jetson-container开发环境,以Docker容器为基础去提供各种所需的应用环境,这还需要nvidia-docker的配合,所幸Jetpack安装工具已经都配置完成了。
GPUS Lady
2024/10/22
6000
在Jetson上玩转大模型Day2:环境搭建
【NVIDIA AGX Orin开发教程3】安装开发环境
【NVIDIA Jetson AGX Orin教程2】配置操作系统 【NVIDIA Jetson AGX Orin教程1】开发套件硬件介绍 上一篇文章已经为Orion开发套件配置好Ubuntu 20.04 L4T(Linux for Tegra)桌面级操作系统,但是如下列所需要的开发资源并未安装: - CUDA工具包(toolkits); -CUDNN神经网络加速库: -TensorRT推理加速引擎; -OpenCV计算机视觉库; -VPI视觉开发界面; -DeepStream智能分析工具; 过去的AG
GPUS Lady
2022/06/29
3K0
【NVIDIA AGX Orin开发教程3】安装开发环境
【NVIDIA AGX Orin开发教程6】使用容器版DeepStream-1
【NVIDIA AGX Orin开发教程4】安装DeepStream 【NVIDIA AGX Orin开发教程3】安装开发环境 【NVIDIA Jetson AGX Orin教程2】配置操作系统 【NVIDIA Jetson AGX Orin教程1】开发套件硬件介绍 【NVIDIA AGX Orin开发教程5】使用Docker容器的入门技巧 更多:
GPUS Lady
2022/08/26
7410
【NVIDIA AGX Orin开发教程6】使用容器版DeepStream-1
领先一步:使用NVIDIA Jetson Orin Nano开发套件常见问题(2)
答:请注意,此文本无法提供适当的结果。为了获得最佳且最少困扰的效果,建议您在计算机上进行双系统引导,选择Ubuntu 20.04版本。有些人使用虚拟机,但由于需要正确设置USB,这种方法可能会有不确定性。我听说有一些高级用户使用WSL2,但您需要知道如何正确设置USB并安装回环功能。我强烈建议您选择双系统引导方式。
GPUS Lady
2023/07/08
1.7K0
领先一步:使用NVIDIA Jetson Orin Nano开发套件常见问题(2)
【NVIDIA AGX Orin开发教程5】使用Docker容器的入门技巧
【NVIDIA AGX Orin开发教程4】安装DeepStream 【NVIDIA AGX Orin开发教程3】安装开发环境 【NVIDIA Jetson AGX Orin教程2】配置操作系统 【NVIDIA Jetson AGX Orin教程1】开发套件硬件介绍 更多
GPUS Lady
2022/08/26
9300
【NVIDIA AGX Orin开发教程5】使用Docker容器的入门技巧
今日起,NVIDIA Jetson Orin NANO和Orin NX模组也可以升级成Super模式
昨晚,NVIDIA在其论坛上公布了JetPack 6.2版本,意味着NVIDIA Jetson Orin NANO和Orin NX模组也可以升级成Super模式
GPUS Lady
2025/01/19
1.7K0
今日起,NVIDIA Jetson Orin NANO和Orin NX模组也可以升级成Super模式
英伟达Jetson 官方AI课程
今天看见箱子里的开发板,就拿出来又玩了~按照官方的课程走一遭。 在联网上面2G的版本没有网卡,我就插网线了。。。 记得分享网络的时候是,WLAN给有线连接 连接之后ping一下,成功 看看ip 看看我能不能读取到 然后ping一下jetson的ip 可以直接SSH连接哦 https://www.nvidia.com/en-us/training/ 课程的位置 需要登录 需要的硬件 摄像头可以使用USB的 这里给出来所有的配件 穷人配置系列
云深无际
2021/09/14
6290
英伟达Jetson 官方AI课程
Jetson Orin NANO开发者必须知道的:NGC内容简介与注册密钥
登录 http://ngc.nvidia.com 就能进入NGC中心(如下图),不过这个入口的更新频率很高,首页所看到的内容可能跳转至其他地方。网页最左边的“Explore Catalog”与右上角的 “用户名(未登录之前为Guest)”,大致是固定的。
GPUS Lady
2023/07/08
7290
Jetson Orin NANO开发者必须知道的:NGC内容简介与注册密钥
利用OpenAI和NVIDIA Riva,在Jetson上搭建一个AI聊天机器人
在尖端语音处理领域,Riva 是一款由 NVIDIA 开发的强大平台,使开发人员能够创建强大的语音应用。该平台提供了一系列复杂的语音处理能力,包括自动语音识别(ASR)、文本转语音(TTS)、自然语言处理(NLP)、神经机器翻译(NMT)和语音合成。Riva 的一个关键优势在于其利用了 NVIDIA 的 GPU 加速技术,确保在处理高负载时仍能保持最佳性能。通过用户友好的 API 接口和 SDK 工具,Riva 简化了开发人员构建语音应用的过程。此外,Riva 还在 NVIDIA NGC™ 存储库中提供了预训练的语音模型,这些模型可以在自定义数据集上使用 NVIDIA NeMo 进行进一步优化,从而将专业模型的开发加速了 10 倍。
GPUS Lady
2023/08/23
1K0
利用OpenAI和NVIDIA Riva,在Jetson上搭建一个AI聊天机器人
NVIDIA Jetson AGX Orin填坑初体验
本文征得作者同意转载,大家也可以在知乎上关注作者本人: 原文地址: Nvidia Jetson AGX Orin 初体验 - 张小白的文章 - 知乎 https://zhuanlan.zhihu.com/p/503890030 一、开箱 Nvidia Jetson AGX Orin是今年Nvidia推出的唯一的开发套件,相比Jetson Nano 472GFLOP算力、Jetson Xaiver 32TOPS(INT8)算力,它的算力达到了200 TOPS左右。也就是说,几乎相当于目前主流设备的8-10倍
GPUS Lady
2022/04/25
5K0
NVIDIA Jetson AGX Orin填坑初体验
NVIDIA Deepstream 4.0笔记(完结篇):如何开始使用Deepstream​以及容器
本次笔记整理自NVIDIA 8月20日在线研讨会,原讲座标题:DEEPSTREAM SDK – ACCELERATING REAL-TIME AI BASED VIDEO AND IMAGE ANALYTICS
GPUS Lady
2019/08/30
5.6K0
NVIDIA Jetson TX2和AGX Xavier产品中一些容易忽略的特点
NVIDIA®Jetson™AGX Xavier和Jetson TX2提供了一个内置的Cortex-R5微控制器,该控制器也被称为传感器处理引擎(SPE)。示例使用包括传感器数据处理、唤醒管理、无人机和机器人。
GPUS Lady
2019/08/09
3.6K0
NVIDIA Jetson TX2和AGX Xavier产品中一些容易忽略的特点
如何给NVIDIA JetsonOrin Nano开发套件安装CSI摄像头
【教程】如何在NVIDIA Jetson Orin NANO上把系統刷到SSD上?
GPUS Lady
2023/05/30
1.7K1
如何给NVIDIA JetsonOrin Nano开发套件安装CSI摄像头
JetPack 6.1震撼发布:为NVIDIA Jetson Orin平台注入全新活力!
中国的用户还沉浸在国庆长假时,英伟达宣布JetPack 6.1的正式版发布,这是一次重大升级,包含了Jetson Linux 36.4 17、Linux Kernel 5.15以及基于Ubuntu 22.04的根文件系统。此版本专为提升NVIDIA Jetson Orin模块和开发者套件的性能与功能而设计,为AI和边缘计算应用提供了强大且多功能的软件环境。
GPUS Lady
2024/10/03
9580
OpenEuler 系统安装 docker 和 nvidia-docker
1.查看系统自带的驱动,如果有结果,则说明存在nouveau,没有则直接跳过这一步。
运维晓柏
2025/04/25
5370
NVIDIA Jetpack SDK里包含了哪些?
对于初次使用NVIDIA Jetson产品的人经常会问:这个产品是装什么操作系统?Ubuntu 16.04支持么?支持安卓么?能不能安装CUDA?等等 其实我们之前已经有很多文章介绍了关于如何在NVI
GPUS Lady
2020/10/28
4.4K0
NVIDIA  Jetpack SDK里包含了哪些?
增强视觉AI可能性:DeepStream 6.3推出GXF和多架构容器支持
DeepStream是领先的基于GStreamer的软件开发工具包(SDK),使开发人员能够创建尖端的视觉AI应用。凭借其先进的功能和增强的能力,DeepStream处于图像处理,物体检测和AI驱动解决方案的前沿。
GPUS Lady
2023/08/15
7520
在NVIDIA Jetson集群上运行集群管理软件K3s
这次我们以Kubernet的轻量级管理工具K3S在这个4节点设备上搭建Docker容器集群管理功能,主要目的如下:
GPUS Lady
2021/01/06
2.8K0
在NVIDIA Jetson集群上运行集群管理软件K3s
Nvidia JetSON AGX Xavier查看版本常用命令
借助 NVIDIA Jetson AGX Xavier 开发者套件,您可以轻松创建和部署面向制造、交付、零售、智慧城市等领域的端到端 AI 机器人应用程序。该套件由 NVIDIA JetPack 和 DeepStream SDK,以及 CUDA®、cuDNN 和 TensorRT 软件库提供支持,可为您提供立即入门所需的所有工具
zd123
2021/05/27
3.9K0
推荐阅读
相关推荐
【NVIDIA AGX Orin开发教程4】安装DeepStream
更多 >
交个朋友
加入腾讯云官网粉丝站
蹲全网底价单品 享第一手活动信息
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档