

 从补丁 198 开始，Amazon Redshift 将不再支持创建新的 Python UDF。现有的 Python UDF 将继续正常运行至 2026 年 6 月 30 日。有关更多信息，请参阅[博客文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

# 名称和标识符
<a name="r_names"></a>

名称用于标识数据库对象，包括表和列以及用户和密码。*名称* 和*标识符* 这两个术语可互换使用。有两种类型的标识符：标准标识符以及带引号的标识符或分隔标识符。标识符必须仅包含 UTF-8 可打印字符。标准标识符和分隔标识符中的 ASCII 字母是不区分大小写的，并且会在数据库中转换为小写。默认情况下，查询结果中的列名称以小写形式返回。要以大写形式返回列名称，请将 [describe\$1field\$1name\$1in\$1uppercase](r_describe_field_name_in_uppercase.md) 配置参数设置为 **true**。

## 标准标识符
<a name="r_names-standard-identifiers"></a>

标准 SQL 标识符遵循一组规则并且必须：
+ 以 ASCII 单字节字母字符或下划线字符开头，或者以 UTF-8 多字节字符（长度为 2 到 4 字节）开头。
+ 后续字符可以是 ASCII 单字节字母数字字符、下划线或美元符号，或者 UTF-8 多字节字符 (两到四字节长)。
+ 长度介于 1 到 127 个字节之间，不包含分隔标识符的引号。
+ 不包含引号和空格。
+ 不是保留的 SQL 关键字。

## 分隔标识符
<a name="r_names-delimited-identifiers"></a>

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

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

## 区分大小写的标识符
<a name="r_names-case-sensitive-identifiers"></a>

区分大小写的标识符（也称为混合大小写标识符）可以包含大写字母和小写字母。要使用区分大小写的标识符，可您可以将配置 `enable_case_sensitive_identifier` 设置为 `true`。您可以为集群或会话设置此配置。有关更多信息，请参阅《Amazon Redshift 管理指南》**中的[默认参数值](https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-parameter-groups.html#default-param-group-values)和[enable\$1case\$1sensitive\$1identifier](r_enable_case_sensitive_identifier.md)。

## 系统列名称
<a name="r_names-system-column-names"></a>

以下 PostgreSQL 系统列名称无法用作用户定义列中的列名称。有关更多信息，请参阅 [https://www.postgresql.org/docs/8.0/static/ddl-system-columns.html](https://www.postgresql.org/docs/8.0/static/ddl-system-columns.html)。
+ `oid`
+ `tableoid`
+ `xmin`
+ `cmin`
+ `xmax`
+ `cmax`
+ `ctid`

## 示例
<a name="r_names-examples"></a>

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

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/redshift/latest/dg/r_names.html)

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

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

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

```
select "This ""IS IT"""
from "group";

this "is it"
--------------
(0 rows)
```

```
select "this ""is it"""
from "group";

this "is it"
--------------
(0 rows)
```

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

```
select "group"."this ""is it"""
from "group";

this "is it"
--------------
(0 rows)
```

以下 CREATE TABLE 命令创建一个表，其中的一个列名包含斜杠：

```
create table if not exists city_slash_id(
                  "city/id" integer not null,
                  state char(2) not null);
```