今天数据库老师留了一道实验题,如下: 我的DBMS是MySQL,数据库管理工具为Navicat 一开始,我是按照书上的知识点去敲得: 如果用户要查询的字符串本身就含有通配符 % 或 _ ,这时就需要使用ESCAPE ‘<换码字符>’ 短语对通配符进行转义了。 代码如下: 数据库中的表格如下: 首先,从代码片分析, 后面的代码都变成了字符串形式,说明 将后面的 ’ 转义成为了普通字符,所以会报错。 然后,我又去MySQL的官网上查了一下MySQL 8.0参考手册,进入MySQL 8.0 Reference Manual –> Functions and Operators –> String Functions and Operators –> String Comparison Functions and Operators 有这么一段话: 也就是说,不声明的情况下 默认为是转义字符,所以不再需要escape短语将其转化为换码字符。 关于这个问题 ,我去找我的同学试了试SQL Server,结果让我很痛心😭😭😭,在SQL Server上无论是正斜杠还是反斜杠都可以运行成功,在这里就不演示了。 继续上面的参考文档,可知任意的字符都可以转化成换码字符 例二: 都可以得到正确答案 经过这么一番查阅资料,我终于发现一个问题: 1.MySQL中的 是默认转义字符,如果使用别的字符当作转义字符可以使用ESCAPE短语 如有问题请留言
问题背景
(14)查询“A _ C”课程的课程号和学分。(如果没有“A _ C”这么课,在course表中补上这门课, “ABC” “ACC” 等课程查不出来)
ESCAPE ’ ’ 表示 “ ” 为换码字符。这样匹配字符串中紧跟在 “ ” 后面的字符 “ _ ” 不再具有通配符的含义,转义为普通的 “ _ ” 字符。select Cno,Ccredit from course where Cname like 'A_C' escape '';
查询结果如下:
不仅如此,还会对后面的代码片产生影响:
当时我的心情
问题提出
1.为什么书上的这种方法得不到正确的数据呢?
百度翻译之后,得出:
要测试通配符的文字实例,请在其前面加上转义符。如果未指定ESCAPE字符, 则假定为。2.是因为DBMS的问题嘛?
🏃♂️3.如何在MySQL上得到正确的数据呢?
所以,最后的答案可以有好多种:
例一:select Cno,Ccredit from course where Cname like 'A/_C' escape '/';
select Cno,Ccredit from course where Cname like 'A_C';
问题总结
标题中的正斜杠没有丝毫的作用😑😑😑
但是问题不大,还是有蛮多收获的:
2.科普一哈: 正斜杠,又称左斜杠,符号是”/”;反斜杠,也称右斜杠,符号是””。
3.正斜杠在别的地方还是有点用的,比如除法,分隔符等。下次还得想想正斜杠和反斜杠的用法区别。
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算