标识符
描述
标识符是用于标识数据库对象(例如表、视图、模式、列等)的字符串。Spark SQL 具有常规标识符和带分隔符的标识符,后者用反引号括起来。常规标识符和带分隔符的标识符均不区分大小写。
语法
常规标识符
{ letter | digit | '_' } [ , ... ]
注意:如果 spark.sql.ansi.enforceReservedKeywords
设置为 true,则 ANSI SQL 保留关键字不能用作标识符。有关更多详细信息,请参阅ANSI 兼容性。
带分隔符的标识符
`c [ ... ]`
参数
-
字母
A-Z 或 a-z 中的任何字母。
-
数字
0 到 9 中的任何数字。
-
c
字符集中的任何字符。使用
`
来转义特殊字符(例如`
)。
示例
-- This CREATE TABLE fails with ParseException because of the illegal identifier name a.b
CREATE TABLE test (a.b int);
Error in query:
[PARSE_SYNTAX_ERROR] Syntax error at or near '.': extra input '.'(line 1, pos 20)
== SQL ==
CREATE TABLE test (a.b int)
--------------------^^^
-- This CREATE TABLE works
CREATE TABLE test (`a.b` int);
-- This CREATE TABLE fails with ParseException because special character ` is not escaped
CREATE TABLE test1 (`a`b` int);
Error in query:
[PARSE_SYNTAX_ERROR] Syntax error at or near '`'(line 1, pos 24)
== SQL ==
CREATE TABLE test1 (`a`b` int)
------------------------^^^
-- This CREATE TABLE works
CREATE TABLE test (`a``b` int);