MySQL 中的转义序列
在本文中,我们将了解转义序列。我们将通过示例和示例代码查看它的定义。
我们还将探讨如何将其与通配符一起使用以查找数据中的模式。
转义序列的定义
转义序列字符是不可打印的字符,它指定以下字符的替代解释是转义字符序列。
它从反斜杠开始(表示为*\\*
)并有两个或多个字符。例如,\n
显示一个新行,其中 反斜杠
是一个字符,而 n
是第二个字符。
下面给出了转义序列及其表示的列表。
转义序列 | 字符表示 |
---|---|
\n |
换行符 |
\0 |
空字符 |
\b |
退格字符 |
\r |
回车符 |
\t |
制表符 |
\\ |
反斜杠 |
\% |
百分比字符 |
\a |
警报 |
\f |
换页(新页面) |
\v |
垂直标签 |
\' |
单引号 |
\" |
双引号 |
\? |
问号 |
在编写应用程序时,在某些情况下你必须操作字符串。在将其保存到数据库
之前,必须正确转义此字符串。
这里我们使用转义序列。例如,如果你想在 customer_firstname
为 Nyy'a
的 customer
表中 INSERT
记录,你必须使用 escape sequence
。
customer
和 order
的表作为本教程的示例代码。这些表在当前数据下如下所示。客户表:
订单表:
示例代码:
INSERT INTO customer(customer_firstname, customer_lastname, customer_age, customer_salary)
VALUES
('Nyy\'a', 'Daniel', 19, 10000);
输出:
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 中带有通配符的转义序列
通配符字符用于从数据中获取所需的模式并替换一个或多个字符串。
它与 LIKE
运算符一起使用,LIKE
运算符用于 WHERE
子句。使用带有通配符的转义序列可以轻松获得特定模式。
示例代码:
SELECT customer_firstname from customer where customer_firstname like '___\'_';
在这段代码中,我们从 customer
表中查找 customer_firstname
,其中单引号前有三个字符,单引号后有一个字符。一个下划线 (_
) 用于一个字符。
在 ___\'_'
中,我们用三个下划线来获得三个字符,然后是一个单引号,最后是一个字符。请参阅以下输出进行比较。
输出:
如果你要在列中寻找某种模式怎么办?让我们使用 order
表来练习它。我们将从包含 -12
模式的 order_date
字段中找到所有订单日期。
这里 %
显示一个或多个字符。它表示所需模式之前的一个或多个字符以及以下示例代码中的一个或多个字符。
示例代码:
SELECT order_date from order where order_date like '%\-12%';
输出:
要理解带有 wild card characters
的双引号示例,INSERT``customer
表中的新记录。
示例代码:
INSERT INTO customer(customer_firstname, customer_lastname, customer_age, customer_salary)
VALUES
('\"Nyy\'a\"', 'Dan\'iel', 19, 10000);
输出:
使用以下命令从符合以下模式的 customer
表中查找 customer_firstname
和 customer_lastname
。
示例代码:
SELECT customer_firstname, customer_lastname from customer
where customer_firstname like '%\"%\'%\"'
AND customer_lastname like'%\'___';
输出:
结论
本文得出结论,转义序列是不可打印的,它在以下字符上指定替代表示。
在保存到数据库之前,必须对字符串进行转义。我们还了解到转义字符与通配符一起使用以查找不同的模式。