mysql中如何使用断言(MySQL中的反斜杠)
mysql中如何使用断言(MySQL中的反斜杠)
2024-07-01 04:29:58  作者:赚很多钱  网址:https://m.xinb2b.cn/know/hpc160644.html

在MySQL中有很多特殊符号都是相当恶心的,比如字符串中有单引号(')、双引号(")、反斜杠(\)等等,同学们可以先脑补一下可能会出现啥问题?,下面我们就来聊聊关于mysql中如何使用断言?接下来我们就一起去了解一下吧!

mysql中如何使用断言(MySQL中的反斜杠)

mysql中如何使用断言

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

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

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

一、INSERT语句中有反斜杠(\)1、实际测试

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

INSERTINTO`demo0526`(`id`,`text`)VALUES(null,'D:\陈哈哈\加班');INSERTINTO`demo0526`(`id`,`text`)VALUES(null,'D:\\陈哈哈\\加班');INSERTINTO`demo0526`(`id`,`text`)VALUES(null,'D:\\\陈哈哈\\\加班');INSERTINTO`demo0526`(`id`,`text`)VALUES(null,'D:\\\\陈哈哈\\\\加班');INSERTINTO`demo0526`(`id`,`text`)VALUES(null,'D:\\\\\陈哈哈\\\\\加班');

插入后的结果:

mysql>select*fromdemo0526; ---- ----------------------- |id|text| ---- ----------------------- |1|D:陈哈哈加班||2|D:\陈哈哈\加班||3|D:\陈哈哈\加班||4|D:\\陈哈哈\\加班||5|D:\\陈哈哈\\加班| ---- ----------------------- 5rowsinset(0.00sec)

我们发现结果如下:

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

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

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

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

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

2、是啥原理?

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

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

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

二、SELECt查询反斜杠(\)1、实际测试

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

mysql>select*fromdemo0526; ---- ----------------------- |id|text| ---- ----------------------- |1|D:陈哈哈加班||2|D:\陈哈哈\加班||3|D:\陈哈哈\加班||4|D:\\陈哈哈\\加班||5|D:\\陈哈哈\\加班| ---- -----------------------

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

mysql>SELECt*fromdemo0526wheretextlike'%\%';Emptyset(0.00sec)mysql>SELECt*fromdemo0526wheretextlike'%\\%';Emptyset(0.00sec)

啊!!我们用like '%%'、like '%\%'查询后发现都查不到数据,纳尼?上面的我白学了吗?

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

mysql>SELECT*fromdemo0526wheretextlike'%\\\\%'; ---- ----------------------- |id|text| ---- ----------------------- |2|D:\陈哈哈\加班||3|D:\陈哈哈\加班||4|D:\\陈哈哈\\加班||5|D:\\陈哈哈\\加班| ---- ----------------------- 4rowsinset(0.00sec)

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

mysql>SELECt*fromdemo0526wheretextlike'%\\\\\\\\%'; ---- ----------------------- |id|text| ---- ----------------------- |4|D:\\陈哈哈\\加班||5|D:\\陈哈哈\\加班| ---- ----------------------- 2rowsinset(0.00sec)

2、又是啥原理?

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

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

mysql>SELECt*fromdemo0526wheretext='\\\\'; ---- ------ |id|text| ---- ------ |7|\\| ---- ------ 1rowinset(0.00sec)

总结

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

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

作者:陈哈哈

原文链接:https://blog.csdn.net/qq_39390545/article/details/117296607

  • 四大名旦是哪四个(中国京剧界四大名旦无人不知)
  • 2024-07-02中国京剧界四大名旦无人不知1939年,由北京《立言报》牵头,投票评选下,李世芳、毛世来、张君秋、宋德珠,以得票数的前四位,被列选为“四小名旦”1947年,李世芳因飞机失事而遇难,北京的《纪事报》再次发起“新四小名旦”的评选,结。
  • 唇蜜可以晚上涂吗(唇蜜如何卸妆)
  • 2024-07-02唇蜜如何卸妆唇蜜不能在晚上涂抹,唇蜜有颜色,主要作用是修饰唇形和唇色,滋润皮肤的作用并不是很明显,而且使用完之后需要卸妆,不适合在夜间使用,在晚上的时候可以涂抹润唇膏,锁住唇部皮肤中的水分唇蜜是需要卸妆的,在洁面。
  • 优秀茶商的7个卖茶技巧你知道几个(拼的起手式⑨)
  • 2024-07-02拼的起手式⑨来源:【四川日报-川观新闻】川观新闻记者阚莹莹文/图/视频进入2月,宜宾市翠屏区的川南茶园,嫩芽悄悄冒出枝头,川南早茶即将大规模开采,川茶集团茶叶基地办公室主任王细红需要每天到茶山走一遍,一旦哪个山头。
  • 显气质的口红色号推荐(气场满满的口红色号推荐)
  • 2024-07-02气场满满的口红色号推荐气场满满的口红色号推荐:超显白,特别适合一些温柔御姐型的女生~!阿玛尼唇膏406不同于405,406有气场的女王色,颜色比正红色还要显得浓郁一点,是酒醉玫瑰的感觉,涂在嘴巴上,会给人一种格外性感妩媚的。
  • 新经济营销策略(陆家嘴创投课)
  • 2024-07-02陆家嘴创投课Z世代消费群体(95后-00后)逐渐成为消费市场的主力军,他们逐渐显露出较为独特的消费观念和消费行为面对全新的市场格局,品牌方们需要为迎接这群未来的消费主力军,做好充分准备鉴于此,此次创投课我们邀请到。
  • 二次根式解题技巧图(数学老师熬夜整理)
  • 2024-07-02数学老师熬夜整理本文由“同心圆数学世界”原创未经允许,不得转载学生学习,不受任何限制录入很辛苦,请大家点个赞、留个言再走吧!如果对学习初中数学有用,欢迎收藏、转发【因网页不支持数学公式,请注意看图片】这是一份老师从学。
  • 运动完喝水会胖吗(运动完喝水有影响吗)
  • 2024-07-02运动完喝水有影响吗刚运动完喝水是不会长胖的首先,水几乎不含热量和糖分,人体运动后喝水可以帮助人体缓解运动引起的口渴症状,不会导致人体内热量上升,不会引起发胖其次,人体新陈代谢离不开水的参与,运动后喝水能够为人体提供水分。
  • 梅德韦杰夫谈核武器袭击乌克兰(乌克兰发布安全保障协议草案)
  • 2024-07-02乌克兰发布安全保障协议草案来源:环球时报【环球时报驻俄罗斯特约记者李琳佳环球时报特约记者柳玉鹏】乌克兰在哈尔科夫地区反攻的同时,又开始展开外交攻势乌克兰总统办公室13日发布了一份由西方专家帮助拟定的乌克兰安全保障协议草案,按照。
  • cdr海报制作教程图文(CDR学习笔记海报设计)
  • 2024-07-02CDR学习笔记海报设计运用CorelDRAW工具制作一张外卖海报,效果如图素材:电话房子红色热气球黄色热气球青色热气球外卖小人1、选择“文件”→“新建”,创建一个如图所示参数大小的文档2、选择“矩形工具”绘制一个宽度为60。
  • 可怜天下父母心 慈禧(可怜天下父母心)
  • 2024-07-02可怜天下父母心还在上学的时候,课本上和生活中常常看到或听到“可怜天下父母心”这句话,因为不理解这句话的含义,自然也不会记在心底后来慢慢地长大了,这句话依然时常听到看到,但我仍然没有在意直到结婚有了自己的孩子后,这才。