MySQL 特殊字符

MySQL 特殊字符

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

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

代码语言:javascript代码运行次数:0运行复制SELECT column1, column2

FROM table

-- This is a single-line comment

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

代码语言:javascript代码运行次数:0运行复制SELECT column1, column2

FROM table

/* This is a

multi-line comment */

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

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

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

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

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

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

代码语言:javascript代码运行次数:0运行复制SELECT 'It\'s a beautiful day';

SELECT 'It''s a beautiful day';因为 MySQL 支持使用双引号表示字符串,所以还可以使用双引号表示一个包含单引号的字符串。

代码语言:javascript代码运行次数:0运行复制SELECT "It's a beautiful day"反之亦然,如果字符串中包含双引号,也可以使用上面三种方式来表示带有双引号的字符串。

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

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

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

避免与保留关键字冲突。如果你希望使用一个与 MySQL 中的保留字同名的标识符,可以使用反引号将其括起来,以避免语法错误。

代码语言:javascript代码运行次数:0运行复制SELECT `select`, `from`, `where` FROM `my_table`;允许特殊字符。使用反引号,您可以创建包含特殊字符(如空格、点、逗号等)的标识符。这样,您可以为表、列等对象取名,使其更具描述性,而不受命名规则的限制。

代码语言:javascript代码运行次数:0运行复制SELECT `first name`, `last name` FROM `employee.data`;区分大小写。MySQL 默认情况下对标识符不区分大小写。如果你希望区分,可以使用反引号。

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

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

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

要查找以b开头的名称:

代码语言:javascript代码运行次数:0运行复制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结尾的名称:

代码语言:javascript代码运行次数:0运行复制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的名称:

代码语言:javascript代码运行次数:0运行复制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 |

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

代码语言:javascript代码运行次数:0运行复制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 指定:

代码语言:javascript代码运行次数:0运行复制expr LIKE pat ESCAPE 'escape_char'默认情况下,MySQL 使用反斜线(\)作为转义字符。

代码语言:javascript代码运行次数:0运行复制SELECT '完成进度 50%' LIKE '%50%%' AS like1, '日期 20150101' LIKE '%50%%' AS like2;

+-------+-------+

| like1 | like2 |

+-------+-------+

| 1 | 1 |

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

代码语言:javascript代码运行次数:0运行复制SELECT '完成进度 50%' LIKE '%50\%%' AS like1, '日期 20150101' LIKE '%50\%%' AS like2;

+-------+-------+

| like1 | like2 |

+-------+-------+

| 1 | 0 |

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

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

Escape Sequence

Character Represented by Sequence

\0

An ASCII NUL (X’00’) character

\’

A single quote (') character

\"

A double quote (") character

\b

A backspace character

\n

A newline (linefeed) character

\r

A carriage return character

\t

A tab character

\Z

ASCII 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

📚 相关推荐

孩童游戏有哪些 最新孩童游戏盘点
beat365手机下载

孩童游戏有哪些 最新孩童游戏盘点

📅 07-14 👁️ 2252
世界杯点球如何计算进球数?(点球大战中关键的得分方式及其规则解析)
猫咪吃撑了是什么症状?猫咪吃撑了怎么办?
365不让提款

猫咪吃撑了是什么症状?猫咪吃撑了怎么办?

📅 09-16 👁️ 9205
在剪映里面怎么换视频背景,一步步教你更改背景技巧
750轮胎充多少气压
365不让提款

750轮胎充多少气压

📅 07-27 👁️ 8195
DNF什么是心悦3了解一下?续期资格如此简单,富贵限制我的想象!
人渣scum全地图资源点如何分布
365下载手机版

人渣scum全地图资源点如何分布

📅 08-31 👁️ 8665
清洗苹果笔记本电脑的键盘的操作步骤
365不让提款

清洗苹果笔记本电脑的键盘的操作步骤

📅 08-10 👁️ 3999
自动精灵免费脚本下载安装手机版 v2.27.2 安卓版
365下载手机版

自动精灵免费脚本下载安装手机版 v2.27.2 安卓版

📅 07-02 👁️ 1747