MySql字符
转义在字符串
中,某些序列具有特殊含义。这些序列均用反斜线(‘\’)开始,即所谓的转义字符。MySQL识别下面的转义序列:
\0 ASCII 0(NUL)字符。\'单引号
(‘'’)。
\"双引号(‘"’)。
\b 退格符。
\n换行符。
\r回车符。
\t tab字符。
\Z ASCII 26(控制(Ctrl)-Z)。该字符可以编码为‘\Z’,以允许你解决在Windows中ASCII 26代表文件结尾这一问题。(如果你试图使用mysql db_name <file_name,ASCII 26会带来问题)。
\\反斜线(‘\’)字符。
\%‘%’字符。参见表后面的注解。
\_‘_’字符。参见表后面的注解。使用mysql模糊查询时,如果输入特殊字符,比如%,_会导致查询条件匹配所有记录,因为mysql的模糊查询要使用like关键字,而%和_分别时通配符,%表示任意个任意字符,_表示任意一个字符,如果要查询的字符包含%或_,会导致查询条件无效。
这个问题,首先要将%和_符号进行转义,这样就与mysql的%和_通配符不冲突,
在特殊字符前加 / ,特殊字符分别转义成MySQL识别下列转义字符:
\0
一个ASCII 0 (NUL)字符。
\n
一个新行符。
\t
一个定位符。
\r
一个回车符。
\b
一个退格符。
\'
一个单引号(“'”)符。
\"
一个双引号(“"”)符。
\\
一个反斜线(“\”)符。
\%
一个“%”符。它用于在正文中搜索“%”的文字实例,否则这里“%”将解释为一个通配符。
\_
一个“_”符。它用于在正文中搜索“_”的文字实例,否则这里“_”将解释为一个通配符。
注意,如果你在某些正文环境中使用“\%”或“\%_”,这些将返回字符串“\%”和“\_”而不是“%”和“_”。
有几种方法在一个字符串内包括引号:
一个字符串内用“'”加引号的“'”可以被写作为“''”。
一个字符串内用“"”加引号的“"”可以被写作为“""”。
你可以把一个转义字符(“\”)放在引号前面。
一个字符串内用“"”加引号的“'”不需要特殊对待而且不必被重复或转义。同理,一个字符串内用“'”加引号的与“"”也不需要特殊对待。
下面显示的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 |
+--------------------+
如果你想要把二进制数据插入到一个BLOB列,下列字符必须由转义序列表示:
NUL
ASCII 0。你应该用'\0'(一个反斜线和一个ASCII '0')表示它。
\
ASCII 92,反斜线。用'\\'表示。
'
ASCII 39,单引号。用“\'”表示。
"
ASCII 34,双引号。用“\"”表示。
评论列表(0条)