Amazon Redshift
数据库开发人员指南 (API Version 2012-12-01)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

名称和标识符

名称用于标识数据库对象,包括表和列以及用户和密码。名称标识符 这两个术语可互换使用。有两种类型的标识符:标准标识符以及带引号的标识符或分隔标识符。标识符必须仅包含 UTF-8 可打印字符。标准标识符和分隔标识符中的 ASCII 字母是不区分大小写的,并且会转换为小写。

标准标识符

标准 SQL 标识符遵循一组规则并且必须:

  • 开头是 ASCII 单字节字母字符或下划线字符,或者 UTF-8 多字节字符 (两到四字节长)。

  • 后续字符可以是 ASCII 单字节字母数字字符、下划线或美元符号,或者 UTF-8 多字节字符 (两到四字节长)。

  • 长度介于 1 到 127 个字节之间,不包含分隔标识符的引号。

  • 不包含引号和空格。

  • 不是保留的 SQL 关键字。

分隔标识符

分隔标识符(也称为“带引号的标识符”)以双引号 (") 开头和结尾。如果您使用分隔标识符,则必须在每次引用对象时使用双引号。标识符可包含双引号以外的任何标准 UTF-8 可打印字符。因此,您可创建包含非法字符的列或表名称,如空格或百分比符号。

分隔标识符中的 ASCII 字母是不区分大小写的,并且会转换为小写。要在字符串中使用双引号,您必须在字符串前加上另一个双引号字符。

示例

此表显示了分隔标识符的示例、生成的输出和讨论:

语法 结果 讨论
"group" group GROUP 是保留字,因此在标识符中使用它需要双引号。
"""WHERE""" "where" WHERE 也是一个保留字。要在字符串中包含引号,请使用其他双引号字符对每个双引号字符进行转义。
"This name" this name 需要使用双引号来保留空格。
"This ""IS IT""" this "is it" 围绕 IS IT 的每个引号必须在前面添加额外的引号才能成为名称的一部分。

创建一个名为 group 的表,其中一列的名称为 this "is it":

Copy
create table "group" ( "This ""IS IT""" char(10));

下面的查询返回相同的结果:

Copy
select "This ""IS IT""" from "group"; this "is it" -------------- (0 rows)
Copy
select "this ""is it""" from "group"; this "is it" -------------- (0 rows)

以下完全限定的 table.column 语法也返回相同的结果:

Copy
select "group"."this ""is it""" from "group"; this "is it" -------------- (0 rows)