标识符

架构、表、投影、列名称等对象的标识符(名称),长度最多可以为 128 个字节。

无引号的标识符

无引号的 SQL 标识符必须用以下值开头:

  • 非 Unicode 字母:A–Z 或 a-z

  • 下划线 (_)

标识符中的后续字符可以是以下任意组合:

  • 非 Unicode 字母:A–Z 或 a-z

  • 下划线 (_)

  • 数位 (0–9)

  • Unicode 字母(字母具有发音或不属于拉丁字母表),模型名称不支持

  • 美元符号 ($),型号名称不支持

带引号的标识符

用双引号 (") 字符括住的标识符可以包含任何字符。如果要包括双引号,需要成对使用;例如 """"。您可以使用可能无效的名称,例如仅包含数字字符 ("123") 或仅包含空格字符、标点符号、SQL 或 Vertica 预留关键字。例如:

CREATE SEQUENCE "my sequence!";

对于字母数字和 SQL 关键字,例如 “1time”、“Next week”和“Select”,需要双引号。

区分大小写

标识符不区分大小写。因此,标识符 "ABC""ABc""aBc" 是同义词,类似于 ABCABcaBc.

非 ASCII 字符

Vertica 接受非 ASCII UTF-8 Unicode 字符作为表名称、列名称和其他标识符,并将忽略大写/小写区别的情况扩展到所有字母,其中包括拉丁语、斯拉夫语和希腊语。

例如,以下 CREATE TABLE 语句在表名中使用了 ß(德语 eszett):

=> CREATE TABLE straße(x int, y int);
   CREATE TABLE

标识符按创建时的形态保存

SQL 标识符未转换为小写,例如表和列名称。它们按照创建时的形态保存,使用区分大小写比较来解析对它们的引用。例如,以下语句创建表 ALLCAPS

=> CREATE TABLE ALLCAPS(c1 varchar(30));
=> INSERT INTO ALLCAPS values('upper case');

以下语句是同一个查询的变体:

=> SELECT * FROM ALLCAPS;
=> SELECT * FROM allcaps;
=> SELECT * FROM "allcaps";

三个查询都返回相同的结果:

     c1
------------
 upper case
(1 row)

请注意,如果尝试创建表 AllCaps,Vertica 会返回错误:

=> CREATE TABLE AllCaps(c1 varchar(30));
   ROLLBACK:  table "AllCaps" already exists

有关其他信息,请参阅 QUOTE_IDENT