字符串是由字节或字符组成的序列,由单引号('
)或双引号("
)字符。例子:
“另一个字符串”
相邻放置的带引号的字符串连接成单个字符串。以下两行是等价的:
'a string' 'a' ' ' 'string'
如果ANSI_QUOTES
启用SQL模式时,字符串文字只能在单引号内引用,因为在双引号内引用的字符串将被解释为标识符。
一个二进制串是由字节组成的字符串。每个二进制字符串都有一个字符集和排序规则二进制
.一个二进制字符串是一个字符串。它有一个字符集二进制
以及与字符集兼容的排序规则。
对于这两种类型的字符串,比较都基于字符串单元的数值。对于二进制字符串,单位是字节;比较使用数值字节值。对于非二进制字符串,单位为字符,一些字符集支持多字节字符;比较使用数字字符代码值。字符代码排序是字符串排序的一个函数。(有关更多信息,请参见
在mysql客户机时,二进制字符串使用十六进制表示法显示,这取决于——binary-as-hex
.有关该选项的详细信息,请参见核对子句,将其指定为使用特定字符集和排序规则的字符串:
(_charset_name]“字符串(核对collation_name]
例子:
选择_latin1”字符串”;选择_binary”字符串”;选择_utf8”字符串' COLLATE utf8_danish_ci;
你可以使用N '
(或文字
'n '
)在国家字符集中创建一个字符串。这些语句是等价的:文字
'
SELECT N'some text';SELECT n'some text';SELECT _utf8'some text';
有关这些形式的字符串语法的信息,请参见NO_BACKSLASH_ESCAPES
启用SQL模式。这些序列都以反斜杠(\
),称为转义字符.中所示的转义序列x \只是x
.这些序列区分大小写。例如,\ b
被解释为退格,但是\ B
被解释为B
.属性所指示的字符集进行转义处理character_set_connection
系统变量。如上所述,即使字符串前面有一个指示不同字符集的介绍器,也是如此
表9.1特殊字符转义序列
ASCII 26字符可以被编码为\ Z
使您能够解决ASCII 26在Windows上代表文件结束符的问题。在文件中使用ASCII 26会导致问题mysql
.db_name
<file_name
的\ %
而且\ _
序列用于搜索的文本实例%
而且_
在模式匹配上下文中,否则它们将被解释为通配符。的描述就像
运营商\ %或\ _
在模式匹配上下文之外,它们求值为字符串\ %
而且\ _
,而不是%
而且_
.
有几种方法可以在字符串中包含引号字符:
一个
'
在带引号的字符串中'
可以写成”
.一个
"
在带引号的字符串中"
可以写成""
.在引用字符前加转义字符(
\
).一个
'
在带引号的字符串中"
不需要特殊处理,不需要加倍或逃避。同样地,"
在带引号的字符串中'
不需要特殊处理。
以下选择
语句演示了引用和转义如何工作:
mysql >选择“你好”,“你好”,“”“你好”“”、“冥界”lo”、“\ '你好';+-------+---------+-----------+--------+--------+ | 你好|“hello”|“你好”“|冥界'lo |“你好 | +-------+---------+-----------+--------+--------+ mysql >选择“你好”,“你好”,”“你好”,“冥界”“瞧”,“\”你好”;+-------+---------+-----------+--------+--------+ | 你好|“你好”|“hello”|帮助“lo |“你好 | +-------+---------+-----------+--------+--------+ mysql >选择“这\ nIs \ nFour \在线”;+--------------------+ | 这是四行 | +--------------------+ mysql >选择“消失\反斜杠”;+------------------------+ | 反斜杠消失 | +------------------------+
将二进制数据插入字符串列(例如团
列),您应该用转义序列表示某些字符。反斜杠(\
),用于引用字符串的quote字符必须转义。在某些客户机环境中,可能还需要转义空
或控制+ Z。的mysql客户端截断带引号的字符串,包含空
如果没有转义,则在Windows上的END-OF-FILE可能采用Control+Z。有关表示这些字符的转义序列,请参见
在编写应用程序时,任何可能包含这些特殊字符的字符串在被发送到MySQL服务器的SQL语句中用作数据值之前必须正确转义。你可以通过两种方式做到这一点:
使用转义特殊字符的函数处理字符串。在C程序中,可以使用
mysql_real_escape_string_quote ()
用于转义字符的C API函数。看到mysql_real_escape_string_quote ().在构造其他SQL语句的SQL语句中,可以使用报价()
函数。Perl DBI接口提供了一个报价
方法将特殊字符转换为适当的转义序列。看到作为显式转义特殊字符的替代方法,许多MySQL api提供了一个占位符功能,使您能够在语句字符串中插入特殊标记,然后在发出语句时将数据值绑定到这些标记上。在这种情况下,API负责为您转义值中的特殊字符。