識別碼
說明
識別碼是識別資料庫物件(例如表格、檢視、架構、欄位等)所使用的字串。Spark SQL 有常規識別碼和分隔識別碼,後者會用反引號括起來。常規識別碼和分隔識別碼都不區分大小寫。
語法
常規識別碼
{ letter | digit | '_' } [ , ... ]
注意:如果 spark.sql.ansi.enabled
設為 true,則無法將 ANSI SQL 保留關鍵字用作識別碼。如需更多詳細資訊,請參閱 ANSI 相容性。
分隔識別碼
`c [ ... ]`
參數
-
letter
任何 A-Z 或 a-z 的字母。
-
digit
任何 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);