9.1.1字符串字面值

字符串是由字节或字符组成的序列,由单引号()或双引号()字符。例子:

“另一个字符串”

相邻放置的带引号的字符串连接成单个字符串。以下两行是等价的:

'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特殊字符转义序列

转义序列 序列表示的字符
\ 0 一个ASCII null (X ' 00 ')字符
\ ' 单引号()字符
\” 双引号()字符
\ b 退格字符
\ n 换行(换行)字符
r \ 一个回车字符
\ t 制表符
\ Z ASCII 26 (Control+Z);见表后附注
\ \ 反斜杠()字符
\ % 一个字符;见表后附注
\ _ 一个_字符;见表后附注

ASCII 26字符可以被编码为\ Z使您能够解决ASCII 26在Windows上代表文件结束符的问题。在文件中使用ASCII 26会导致问题mysqldb_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语句中用作数据值之前必须正确转义。你可以通过两种方式做到这一点: