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'%\'___';
輸出:
まとめ
本文得出結論,轉義序列是不可列印的,它在以下字元上指定替代表示。
在儲存到資料庫之前,必須對字串進行轉義。我們還瞭解到轉義字元與萬用字元一起使用以查詢不同的模式。