标识符
架构、表、投影、列名称等对象的标识符(名称),长度最多可以为 128 个字节。
无引号的标识符
无引号的 SQL 标识符必须用以下值开头:
-
非 Unicode 字母:A–Z 或 a-z
-
下划线 (_)
标识符中的后续字符可以是以下任意组合:
-
非 Unicode 字母:A–Z 或 a-z
-
下划线 (_)
-
数位 (0–9)
-
Unicode 字母(字母具有发音或不属于拉丁字母表),模型名称不支持
-
美元符号 (
$
),型号名称不支持当心
SQL 标准不支持在标识符中使用美元符号,因为使用该符号可能会导致出现应用程序可移植性问题。
带引号的标识符
注意
模型名称不支持带引号的标识符用双引号 ("
) 字符括住的标识符可以包含任何字符。如果要包括双引号,需要成对使用;例如 """"
。您可以使用可能无效的名称,例如仅包含数字字符 ("123"
) 或仅包含空格字符、标点符号、SQL 或 Vertica 预留关键字。例如:
CREATE SEQUENCE "my sequence!";
对于字母数字和 SQL 关键字,例如 “1time”、“Next week”和“Select”,需要双引号。
区分大小写
标识符不区分大小写。因此,标识符 "ABC"
、"ABc"
和 "aBc"
是同义词,类似于 ABC
、ABc
和 aBc.
非 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。