MySQL 中的转义序列

Mehvish Ashiq 2023年1月30日 2022年5月13日
  1. 转义序列的定义
  2. MySQL 中的转义序列
  3. MySQL 中带有通配符的转义序列
  4. 结论
MySQL 中的转义序列

在本文中,我们将了解转义序列。我们将通过示例和示例代码查看它的定义。

我们还将探讨如何将其与通配符一起使用以查找数据中的模式。

转义序列的定义

转义序列字符是不可打印的字符,它指定以下字符的替代解释是转义字符序列。

它从反斜杠开始(表示为*\\*)并有两个或多个字符。例如,\n 显示一个新行,其中 反斜杠 是一个字符,而 n 是第二个字符。

下面给出了转义序列及其表示的列表

转义序列 字符表示
\n 换行符
\0 空字符
\b 退格字符
\r 回车符
\t 制表符
\\ 反斜杠
\% 百分比字符
\a 警报
\f 换页(新页面)
\v 垂直标签
\' 单引号
\" 双引号
\? 问号

在编写应用程序时,在某些情况下你必须操作字符串。在将其保存到数据库之前,必须正确转义此字符串。

这里我们使用转义序列。例如,如果你想在 customer_firstnameNyy'acustomer 表中 INSERT 记录,你必须使用 escape sequence

注意
我们使用两个名为 customerorder 的表作为本教程的示例代码。这些表在当前数据下如下所示。

客户表:

mysql 中的转义序列 - 客户表

订单表:

mysql 中的转义序列 - 订单表

示例代码:

INSERT INTO customer(customer_firstname, customer_lastname, customer_age, customer_salary)
VALUES
('Nyy\'a', 'Daniel', 19, 10000);

输出:

mysql 中的转义序列 - 示例

MySQL 中的转义序列

MySQL 中使用了不同的转义序列。请参阅以下示例以了解。

新行示例代码:

SELECT 'Hi!\nWelcome to the learning Escape Sequences.'

输出:

Hi!
Welcome to the learning Escape Sequences.

回车字符示例代码:

SET @strInput = 'Hello,How are you';
SET @strResult = REPLACE(@strInput, ',', CHAR(10)); #CHAR(10) represents \r
SELECT @strResult;

输出:

Hello
How are you

问号示例代码:

SELECT 'Is this a question mark example\?';

输出:

Is this a question mark example?

引号示例代码:

SELECT 'firstname', 'first\'name', '"firstname"',"firstname", '\"firstname\"','firstname\?';

输出:

mysql 中的转义序列-双引号示例

MySQL 中带有通配符的转义序列

通配符字符用于从数据中获取所需的模式并替换一个或多个字符串。

它与 LIKE 运算符一起使用,LIKE 运算符用于 WHERE 子句。使用带有通配符的转义序列可以轻松获得特定模式。

示例代码:

SELECT customer_firstname from customer where customer_firstname like '___\'_';

在这段代码中,我们从 customer 表中查找 customer_firstname,其中单引号前有三个字符,单引号后有一个字符。一个下划线 (_) 用于一个字符。

___\'_'中,我们用三个下划线来获得三个字符,然后是一个单引号,最后是一个字符。请参阅以下输出进行比较。

输出:

mysql 中的转义序列 - 带通配符的单引号

如果你要在列中寻找某种模式怎么办?让我们使用 order 表来练习它。我们将从包含 -12 模式的 order_date 字段中找到所有订单日期。

这里 % 显示一个或多个字符。它表示所需模式之前的一个或多个字符以及以下示例代码中的一个或多个字符。

示例代码:

SELECT order_date from order where order_date like '%\-12%';

输出:

mysql 中的转义序列-查找模式部分 a

要理解带有 wild card characters 的双引号示例,INSERT``customer 表中的新记录。

示例代码:

INSERT INTO customer(customer_firstname, customer_lastname, customer_age, customer_salary)
VALUES
('\"Nyy\'a\"', 'Dan\'iel', 19, 10000);

输出:

mysql 中的转义序列 - 查找模式部分 b

使用以下命令从符合以下模式的 customer 表中查找 customer_firstnamecustomer_lastname

示例代码:

SELECT customer_firstname, customer_lastname from customer 
where customer_firstname like '%\"%\'%\"'
AND customer_lastname like'%\'___';

输出:

mysql 中的转义序列 - 查找模式部分 c

结论

本文得出结论,转义序列是不可打印的,它在以下字符上指定替代表示。

在保存到数据库之前,必须对字符串进行转义。我们还了解到转义字符与通配符一起使用以查找不同的模式。

Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook