作者:天极软件 来源:天极软件
一个字符串是一个字符序列,由单引号(“'”)或双引号(“"”)字符(后者只需你不在ANSI情势运转)解围。比方:
'a string' "another string"
在字符串内,某个顺序有非凡的意义。这些顺序的每一个以一条反斜线(“”)开始,称为转义字符。MySQL识别下列转义字符:
- 一个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 "ThisnIsnFournlines"; -------------------- | This Is Four lines | --------------------
如果你想要把二进制数据拔出到一个BLOB
列,下列字符必须由转义序列暗示:
NUL
- ASCII 0。你应该用''(一个反斜线和一个ASCII '0')暗示它。
- ASCII 92,反斜线。用''暗示。
'
- ASCII 39,单引号。用“'”暗示。
"
- ASCII 34,双引号。用“"”暗示。
如果你写C代码,你可以利用C API函数mysql_escape_string()
来为INSERT
语句转义字符。见20.3 C API 函数概述。在 Perl中,你可以利用DBI
包中的quote
法子变更非凡的字符到正确的转义序列。见20.5.2 DBI
接口。
你应该在任何可以或许包括上述任何非凡字符的字符串上利用转义函数!
版权声明:
原创作品,允许转载,转载时请务必以超链接方式标明文章 原始因由 、作者信息和本声明。否则将究查法律责任。