_018_MySQL_MySql字元轉義
在字串中,某些序列具有特殊含義。這些序列均用反斜線(‘\’)開始,即所謂的轉義字元。MySQL識別下面的轉義序列:
\0 |
ASCII 0(NUL)字元。 |
\' |
單引號(‘'’)。 |
\" |
雙引號(‘"’)。 |
\b |
退格符。 |
\n |
換行符。 |
\r |
回車符。 |
\t |
tab字元。 |
\Z |
ASCII 26(控制(Ctrl)-Z)。該字元可以編碼為‘\Z’,以允許你解決在Windows中ASCII 26代表檔案結尾這一問題。(如果你試圖使用mysql db_name |
\\ |
反斜線(‘\’)字元。 |
\% |
‘%’字元。參見表後面的註解。 |
\_ |
‘_’字元。參見表後面的註解。 |
這些序列對大小寫敏感。例如,‘\b’解釋為退格,但‘\B’解釋為‘B’。
‘\%’和‘\_’序列用於搜尋可能會解釋為萬用字元的模式匹配環境中的‘%’和‘_’文字例項。參見12.3.1節,“字串比較函式”。請注意如果你在其它環境中使用‘\%’或‘\_’,它們返回字串‘\%’和‘\_’,而不是‘%’和‘_’。
在其它轉義序列中,反斜線被忽略。也就是說,轉義字元解釋為彷彿沒有轉義。
有幾種方式可以在字串中包括引號:
· 在字串內用‘'’引用的‘'’可以寫成‘''’。
· 在字串內用‘"’引用的‘"’可以寫成‘""’。
· 可以在引號前加轉義字元(‘\’)。
· 在字串內用‘"’引用的‘'’不需要特殊處理,不需要用雙字元或轉義。同樣,在字串內用‘'’引用的‘"’也不需要特殊處理。
下面的SELECT語句顯示了引用和轉義如何工作:
mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello';
+-------+---------+-----------+--------+--------+
| hello | "hello" | ""hello"" | hel'lo | 'hello |
+-------+---------+-----------+--------+--------+
mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", "\"hello";
+-------+---------+-----------+--------+--------+
| hello | 'hello' | ''hello'' | hel"lo | "hello |
+-------+---------+-----------+--------+--------+
mysql> SELECT 'This\nIs\nFour\nLines';
+--------------------+
| This
Is
Four
Lines |
+--------------------+
mysql> SELECT 'disappearing\ backslash';
+------------------------+
| disappearing backslash |
+------------------------+
如果你想要在字串列內插入二進位制資料(例如BLOB),必須通過轉義序列表示下面的字元:
NUL |
NUL位元組(ASCII 0)。用‘\0’表示該字元(反斜線後面跟一個ASCII‘0’字元)。 |
\ |
反斜線(ASCII 92)。用‘\\’表示該字元。 |
' |
單引號(ASCII 39)。用‘\'’表示該字元。 |
" |
雙引號(ASCII 34)。用‘\"’表示該字元。 |