MySQL 特殊字符

文章目录

  • 1.注释符
  • 2.字符串符
  • 3.反引号
  • 4.模式匹配
    • 通配符
    • 转义符
  • 参考文献

1.注释符

SQL 注释是用来在 SQL 语句中添加对代码的解释说明。SQL 支持两种类型的注释符号。

单行注释:使用两个连续的减号(–)表示。减号后面的内容将被视为注释,直到该行结束。

SELECT column1, column2
FROM table
-- This is a single-line comment
WHERE condition;

多行注释:使用/* 注释内容*/的格式表示。注释内容位于 /* 和 */ 之间,可以跨越多行。

SELECT column1, column2
FROM table
/* This is amulti-line comment */
WHERE condition;

MySQL 除了支持上面 SQL 标准规定的两种注释方式,还支持使用 # 进行单行注释。因为 # 不是 SQL 标准规定的注释方式,所以并不是所有数据库都支持。

2.字符串符

在 SQL 标准中,字符串使用单引号(')表示,而不是双引号(")。

但对于主流的数据库,都支持双引号表示字符串,如 Oracle、MySQL 和 SQL Server 等。

如果字符串中包含单引号该如何表示呢?

在 SQL 中,如果要表示一个带有单引号的字符串有多种方式。

可以使用反斜杠(\)进行转移,也可以使用单引号进行转义,即使用两个单引号来表示一个单引号。

SELECT 'It\'s a beautiful day';
SELECT 'It''s a beautiful day';

因为 MySQL 支持使用双引号表示字符串,所以还可以使用双引号表示一个包含单引号的字符串。

SELECT "It's a beautiful day"

反之亦然,如果字符串中包含双引号,也可以使用上面三种方式来表示带有双引号的字符串。

至于使用单引号还是双引号表示字符串,我们应该首选单引号,因为这符合 SQL 标准,且是主流做法。

3.反引号

在 MySQL 中,反引号(`)是一种用于转义标识符(例如表名、列名、别名等)的特殊字符。反引号的主要作用是允许你在标识符中使用保留字、特殊字符或包含空格的名称,而不会引发语法错误。

以下是反引号在 MySQL 中的作用示例:

  1. 保留字: 如果你希望使用一个与 MySQL 中的保留字同名的标识符,可以使用反引号将其括起来,以避免语法错误。
SELECT `select`, `from`, `where` FROM `my_table`;
  1. 特殊字符和空格: 如果标识符包含特殊字符或空格,可以使用反引号将其括起来,使其被识别为一个整体。
SELECT `first name`, `last name` FROM `employee data`;
  1. 大小写敏感性: 在默认情况下,MySQL 标识符是不区分大小写的。如果你希望标识符保留原始大小写,可以使用反引号。
SELECT `MyColumn` FROM `my_table`;

需要注意的是,反引号在 SQL 标准中并不是通用的,它是 MySQL 特有的语法。大多数其他数据库系统使用双引号或方括号来实现类似的功能。同时,过度使用反引号可能会导致查询变得不够可读,因此建议仅在必要的情况下使用。

4.模式匹配

通配符

SQL 标准中规定模式匹配使用下划线(_)匹配任何单个字符,使用百分号(%)匹配任意数量的字符(包括零个字符)。

在 MySQL 中,SQL 模式默认不区分大小写。使用 SQL 模式时请勿使用 = 或 <>,请改用 LIKE 或 NOT LIKE 比较运算符。

要查找以b开头的名称:

mysql> SELECT * FROM pet WHERE name LIKE 'b%';
+--------+--------+---------+------+------------+------------+
| name   | owner  | species | sex  | birth      | death      |
+--------+--------+---------+------+------------+------------+
| Buffy  | Harold | dog     | f    | 1989-05-13 | NULL       |
| Bowser | Diane  | dog     | m    | 1989-08-31 | 1995-07-29 |
+--------+--------+---------+------+------------+------------+

查找以fy结尾的名称:

mysql> SELECT * FROM pet WHERE name LIKE '%fy';
+--------+--------+---------+------+------------+-------+
| name   | owner  | species | sex  | birth      | death |
+--------+--------+---------+------+------------+-------+
| Fluffy | Harold | cat     | f    | 1993-02-04 | NULL  |
| Buffy  | Harold | dog     | f    | 1989-05-13 | NULL  |
+--------+--------+---------+------+------------+-------+

查找包含w的名称:

mysql> SELECT * FROM pet WHERE name LIKE '%w%';
+----------+-------+---------+------+------------+------------+
| name     | owner | species | sex  | birth      | death      |
+----------+-------+---------+------+------------+------------+
| Claws    | Gwen  | cat     | m    | 1994-03-17 | NULL       |
| Bowser   | Diane | dog     | m    | 1989-08-31 | 1995-07-29 |
| Whistler | Gwen  | bird    | NULL | 1997-12-09 | NULL       |
+----------+-------+---------+------+------------+------------+

查找恰好包含五个字符的名称,请使用模式字符 _ :

mysql> SELECT * FROM pet WHERE name LIKE '_____';
+-------+--------+---------+------+------------+-------+
| name  | owner  | species | sex  | birth      | death |
+-------+--------+---------+------+------------+-------+
| Claws | Gwen   | cat     | m    | 1994-03-17 | NULL  |
| Buffy | Harold | dog     | f    | 1989-05-13 | NULL  |
+-------+--------+---------+------+------------+-------+

MySQL 除了提供标准的 SQL 模式匹配,还支持基于扩展正则表达式的模式匹配,类似于 Unix 实用程序(如 vi、grep 和 sed)使用的扩展正则表达式。

如果您想要在 MySQL 中使用正则表达式进行匹配,可以查阅 MySQL 官方文档 Pattern Matching 以了解更多信息。

转义符

由于百分号和下划线是通配符,具有特殊的意义。当我们想要判断字符串中是否包含这两个字符时,例如“50%”,就需要使用一个转义字符将模式中的通配符解释为普通字符。转义字符使用 ESCAPE 指定:

expr LIKE pat ESCAPE 'escape_char'

默认情况下,MySQL 使用反斜线(\)作为转义字符。

SELECT '完成进度 50%' LIKE '%50%%' AS like1, '日期 20150101' LIKE '%50%%' AS like2;
+-------+-------+
| like1 | like2 |
+-------+-------+
|     1 |     1 |
+-------+-------+

上面的查询没有使用转义字符,直接使用“50%”进行匹配,结果“日期 20150101”也满足条件。

SELECT '完成进度 50%' LIKE '%50\%%' AS like1, '日期 20150101' LIKE '%50\%%' AS like2;
+-------+-------+
| like1 | like2 |
+-------+-------+
|     1 |     0 |
+-------+-------+

使用转义字符后,50\%只会匹配50%

MySQL 可识别下表中所示的转义字符。 对于所有其他转义字符,反斜杠将被忽略。例如,\x 仍是 x。 转义字符区分大小写,例如 \b 被解释为退格键,而 \B 被解释为 B。

Escape SequenceCharacter Represented by Sequence
\0An ASCII NUL (X’00’) character
\’A single quote (') character
\"A double quote (") character
\bA backspace character
\nA newline (linefeed) character
\rA carriage return character
\tA tab character
\ZASCII 26 (Control+Z)
\\A backslash () character
\%A % character
\_A _ character

参考文献

MySQL 8.0 Reference Manual :: 9.7 Comments
MySQL Tutorial :: 4.4.7 Pattern Matching

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/72571.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL 如何避免 RC 隔离级别下的 INSERT 死锁?

本文分析了 INSERT 及其变种&#xff08;REPLACE/INSERT ON DUPLICATE KEY UPDATE&#xff09;的几个场景的死锁及如何避免。 作者&#xff1a;张洛丹&#xff0c;DBA 数据库技术爱好者~ 爱可生开源社区出品&#xff0c;原创内容未经授权不得随意使用&#xff0c;转载请联系小编…

Mysql存储过程与存储函数

文章目录 1. 简介2. 存储过程的特点3. 存储过程操作语法4. 存储过程变量5. 其它语法6. 存储函数 1. 简介 存储过程是事先经过编译并存储在数据库中的一段SQL集合&#xff0c;调用存储过程可以简化应用开发人员的很多工作&#xff0c;减少数据在数据库和应用服务器之间的传输&a…

vs2019 c++开发linux应用

VS2019 C的跨平台开发——Linux开发_Mr_L_Y的博客-CSDN博客前言由于前段时间正好买了一个服务器来跑Tensorflow的推理模型&#xff0c;所以借这个机会把Linux的开发也一并补上。先声明我的服务器是Ubuntu16.04&#xff0c;下面文章的内容也是基于Ubuntu16.04的。为什么标题要写…

MySQL——连接查询

2023.9.4 连接查询相关sql92语句笔记&#xff1a; #连接查询。 又称多表查询&#xff0c;当查询的字段来自多个表时&#xff0c;就会用到连接查询。 #等值连接 /* ①多表等值连接的结果为多表的交集部分 ②n表连接&#xff0c;至少需要n-1个连接条件 ③多表的顺序没有要求 ④一…

libc和glibc有什么区别

libc&#xff08;C Library&#xff09;是一个常见的术语&#xff0c;指的是C语言的标准函数库&#xff0c;提供了许多函数和常量供C语言程序使用。在不同的操作系统中&#xff0c;libc可能是不同的&#xff0c;但是它们都实现了C语言的标准库函数。 glibc&#xff08;GNU C L…

论文阅读《Nougat:Neural Optical Understanding for Academic Documents》

摘要 科学知识主要存储在书籍和科学期刊中&#xff0c;通常以PDF的形式。然而PDF格式会导致语义信息的损失&#xff0c;特别是对于数学表达式。我们提出了Nougat&#xff0c;这是一种视觉transformer模型&#xff0c;它执行OCR任务&#xff0c;用于将科学文档处理成标记语言&a…

数据结构之栈的实现(附源码)

目录 一、栈的概念及结构 ​二、栈的实现 三、初学栈的练习题 一、栈的概念及结构 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底。栈中的数据元素遵守后进先出…

JS数组迭代方法实操

数组迭代方法有 1. every() 2.some() 3.foreach() 4.map() 5.filter 逐一操作&#xff0c;并简要区分之。 1 every() every() 方法使用指定的函数测试数组中所有的项&#xff0c;在数组的所有项都满足该条件时&#xff0c;才返回true&#xff0c;否则返回false&#xff1b; …

Win10下使用vim9

作为一个经常与文字打交道的Writer&#xff0c;你在学会Vim的基本操作之后&#xff0c;就一定会爱上Vim的。 以下是Windows10_64位&#xff08;专业版&#xff09;环境中安装、使用Vim9的全过程&#xff0c;分享一下&#xff1a; 一、下载、安装Vim9 去Vim官网去下载最新的Vi…

切片机制和MR工作机制

InputFormat基类 TextInputFormat&#xff1a;TextInputFormat是默认的FileInputFormat实现类。按行读取每条记录。键是存储该行在整个文件中的起始字节偏移量&#xff0c; LongWritable类型。 CombineTextInputFormat&#xff1a;CombineTextInputFormat用于小文件过多的场景…

Qt5下遍历QList的方法

lines定义如下 QMap<QString,Line> lines; Line的定义如下 class Line{protected:QString name;QColor color;QList<int> total_stations; // all statuibQList<QString> start_stas,end_stas; //start end stationQList<QList<QString>>sta_li…

Golang - api中生产数据,另一个进程控制并发数去消费api中生产的数据

api示例&#xff1a;该实例主要功能是实现一个API&#xff0c;API在调用的时候会向channel中发送任务数据。Consumer函数去消费channel中的任务数据&#xff0c;并且可以通过maxConcurrency去控制消费的并发数 package mainimport ("fmt""github.com/kataras/i…

微信小程序和 Vue 中的遍历循环和列表渲染有一些区别。

在微信小程序中&#xff0c;我们可以使用 wx:for 指令来进行遍历循环&#xff0c;例如&#xff1a; <view wx:for"{{items}}" wx:key"index">{{item}}</view>这里的 items 是一个数组&#xff0c;wx:for 指令会遍历这个数组&#xff0c;并将数…

区块链技术的应用场景和优势

区块链技术的应用场景和优势主要包括以下几个方面&#xff1a; 金融领域&#xff1a;区块链技术可以实现去中心化的交易和支付&#xff0c;提高交易速度和安全性&#xff0c;降低交易成本&#xff0c;有效防止恶意攻击和欺诈行为。比如比特币和以太坊就是区块链技术在金融领域的…

React原理 - React Reconciliation-上

目录 扩展学习资料 React Reconciliation Stack Reconciler【15版本、栈协调】 Stack Reconciler-事务性 事务性带来的弊端&#xff1a; 扩展学习资料 名称 链接 备注 官方文档 Reconciliation – React 英文 stack reconciler Implementation Notes – React 英文…

Ubuntu22.04安装Mongodb7.0

Ubuntu安装Mongodb 1.平台支持2.安装MongoDB社区版2.1导入包管理系统使用的公钥2.2为MongoDB创建列表文件2.3重新加载本地包数据库2.4安装MongoDB包1.安装最新版MongoDB2.安装指定版MongoDB 3.运行MongoDB社区版1.目录2.配置文件3.初始化系统4.启动MongoDB5.验证MongoDB是否成功…

java 实现原型模式

原型模式&#xff08;Prototype Pattern&#xff09;是一种创建型设计模式&#xff0c;它允许创建对象的副本&#xff0c;而无需暴露对象的创建细节。在Java中&#xff0c;原型模式通常通过克隆对象来实现。要实现原型模式&#xff0c;需要满足以下条件&#xff1a; 被克隆的对…

Spring是如何解决循环依赖的问题的?

循环依赖是指多个Bean之间互相依赖&#xff0c;形成一个闭环的情况。这种情况可能会导致系统无法正常初始化或运行&#xff0c;因此需要一种机制来解决循环依赖问题。 Spring解决循环依赖问题的核心思想是延迟注入和三级缓存机制。下面详细介绍这些概念&#xff1a; 1. 延迟注…

Python的pandas库来实现将Excel文件转换为JSON格式的操作

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

物联网应用中蓝牙模块怎么选?_蓝牙模块厂家

在蓝牙模块选型前期&#xff0c;一定要了解应用场景以及需要实现的功能&#xff08;应用框图&#xff09;&#xff0c;以及功能实现过程中所能提供调用的接口&#xff08;主从设备&#xff0c;功能&#xff09;&#xff0c;考虑模块供电&#xff0c;尺寸&#xff0c;接收灵敏度…