文字字面量

字符串字面量

字符串是由单引号(')或双引号(")字符引起的字节或字符序列。例子:

'a string'
"another string"

彼此相邻的带引号的字符串被串联为单个字符串。以下几行是等效的:

'a string'
'a' ' ' 'string'

 如果启用了ANSI_QUOTES SQL 模式,,则字符串文字只能在单引号中引起来,因为双引号中引起的字符串被解释为标识符。

二进制串是一个字节的字符串。每个二进制字符串都有一个字符集和一个binary排序规则,非二进制 string ,它具有binary以外的字符集和与字符集兼容的排序规则。

对于这两种类型的字符串,比较都是基于字符串单位的数值进行的。对于二进制字符串,单位是字节,相对于使用数字字节值。对于非二进制 strings,单位是字符,某些字符集支持多字节字符。相对于使用数字字符代码值。字符代码排序是字符串排序规则的函数。(有关更多信息,请参见 第10.8.5节“与_bin归类相比的二进制归类”)

字符串文字可能具有可选的字符集介绍程序和COLLATE子句,以将其指定为使用特定字符集和排序规则的字符串:

[_charset_name]'string' [COLLATE collation_name]

例子:

SELECT _latin1'string';
SELECT _binary'string';
SELECT _utf8'string' COLLATE utf8_danish_ci;

您可以使用N'literal'(或n'literal')在国家字符集中创建 string。这些语句是等效的:

SELECT N'some text';
SELECT n'some text';
SELECT _utf8'some text';

有关这些形式的字符串语法的信息,请参见 第10.3.7节“国家字符集”和 第10.3.8节“字符集介绍者”

在字符串中,除非启用NO_BACKSLASH_ESCAPES SQL 模式,否则某些 些序列具有特殊含义。这些序列中的每个序列都以反斜杠(\)开头,称为转义字符。MySQL 识别Table 9.1,“Special Character Escape Sequences”中显示的转义序列。对于所有其他转义序列,将忽略反斜杠。例如,\xis x。这些序列区分大小写。例如, \b被解释为退格,但 \B被解释为B。根据character_set_connection系统变量指示的字符集进行转义处理 。即使对于第10.3.6节“字符字符串文字字符集和排序规则”中介绍的指示不同字符集的介绍人之后的字符串,也是如此。

表 9.1 特殊字符逃生序列

转义序列序列表示的字符
\0ASCII NUL(X'00')字符
\'单引号(')字符
\"双引号(")字符
\b退格字符
\n换行符(换行符)
\r回车符
\t制表符
\ZASCII 26(Control + Z); 请参阅表格后面的注释
\\反斜杠(\)字符
\%一个%角色;请参阅表格后面的注释
\_一个_角色;请参阅表格后面的注释
 

可以对ASCII 26字符进行编码,\Z 以使您能够解决ASCII 26在Windows上代表END-OF-FILE的问题。如果尝试使用mysql db_name < file_name,文件中的 ASCII 26 会导致问题。

\%\_序列用于用于在匹配模式上下文中搜索%_的文字实例,否则它们将被解释为通配符。。请参见第12.5.1节“字符串比较函数和运算符”中对LIKE运算符 的描述。如果在 pattern-matching 上下文之外使用\%\_,它们将评估为 strings \%\_,而不是%_

  • '引用的 string 中的'可以写为''

  • "引用的 string 中的"可以写为""

  • 通过转义字符(\)来引用引号字符。

  • 使用"引用的 string 中的'不需要特殊处理,也不需要加倍或转义。以同样的方式,在一个带有'引用的 string 内部不需要特殊处理。

以下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 |
+------------------------+

数字字面量

数字文字包括精确值(整数和 DECIMAL)文字和近似值(浮点数)文字。

整数表示为数字序列。数字可以.作为小数点分隔符。数字可以分别在前面-或后面+指示负值或正值。用科学计数法表示的带有尾数和指数的数字是近似值数字。

精确值数字文字具有整数部分或小数部分,或两者都有。例如: 1.2, 3.4-5, -6.78+9.10

近似值可以科学计数法表示,带有尾数和指数。可以都有或者都没有,例如:1.2E3, 1.2E-3-1.2E3, -1.2E-3

看起来相似的两个数字可能会有所不同。例如,2.34是一个精确值(定点)数字,而是2.34E0一个近似值(浮点数)数字。

DECIMAL 数据类型 fixed-point类型,计算是准确的。在 MySQL 中,DECIMAL类型有几个同义词: NUMERICDECFIXED.  integer类型也是 精确值数字类型

 FLOAT and DOUBLE 数据类型是浮点数类型,计算是近似值。在 MySQL 中, 同义的数据类型还有: FLOAT or DOUBLE are DOUBLE PRECISION and REAL.

在浮点上下文中可以使用整数。它被解释为等效的浮点数。

日期和时间字面量

日期和时间值可以用几种格式表示,例如带引号的字符串或数字,具体取决于值的确切类型和其他因素。例如,在 MySQL 期望 date 的上下文中,它将'2015-07-21''20150721'20150721中的任何一个解释为 date。

本节介绍日期和时间文字的可接受格式。有关时间数据类型的更多信息,例如允许值的范围,请查阅以下部分:

标准SQL和ODBC日期和时间文字。  标准SQL允许使用类型关键字和字符串指定时间文字。关键字和字符串之间的空格是可选的。

DATE 'str'
TIME 'str'
TIMESTAMP 'str'

MySQL可以识别这些构造以及相应的ODBC语法:

{ d 'str' }
{ t 'str' }
{ ts 'str' }

MySQL使用type关键字,并且这些构造分别产生 DATE, TIME和 DATETIME值,包括尾部小数秒部分(如果指定)。

 

未完待续

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值