共用方式為


. (點符號) 運算符號

適用於: 核取記號為「是」Databricks SQL 核取記號為「是」Databricks Runtime

fieldIdentifier回 中的 STRUCT 值,或 中的 MAPkeyIdentifier

語法

structExpr . fieldIdentifier

mapExpr . keyIdentifier

引數

傳回

符合或 fieldIdentifier 值型別的 mapExpr 型別。

名稱解析的優先順序高於此運算子的解析。 也就是說,假設有一系列 以點分隔的標識符 ,Azure Databricks 會解析最長的可能限定名稱。 如果解析的名稱是 MAPSTRUCT Azure Databricks,則會使用點符號運算符解譯其餘的標識碼。

搭配 STRUCT使用 時,Azure Databricks 會在編譯 語句時,驗證 結構中是否存在 fieldIdentifier

搭配 MAP使用 時,且沒有符合 keyIdentifier的索引鍵時,Azure Databricks 會傳回 Null。 若要傳回 NULL請改用 try_element_at 函式

警告

在 Databricks Runtime 中,如果 spark.sql.ansi.enabledfalse,則結果為 NULL 如果找不到相符的索引鍵則 mapExpr為 。

範例

-- Names take precedence over the dot sign operator
> CREATE SCHEMA a;
> CREATE TABLE a.a(a struct<a INT, b STRING>);
> INSERT INTO a.a VALUES (named_struct('a', 5, 'b', 'Spark'));

-- Column `a` in table `a`
> SELECT a.a FROM a.a;
  {"a":5,"b":"Spark"}

-- Field `b` in column `a`
> SELECT a.b FROM a.a;
  Spark

-- Column `a` in table `a.a`
> SELECT a.a.a FROM a.a;
  {"a":5,"b":"Spark"}

-- Field `a` in column `a` in table `a.a`
> SELECT a.a.a.a FROM a.a;
  5

-- Resolving a map value:
> SELECT map('three', 3).three;
 3

-- Resolving a map value using the [ ] notation:
> SELECT map('three', 3)['three']
 3

-- Resolving a map value using back quotes:
> SELECT map('서울시', 'Seoul').`서울시`;
  Seoul

-- Cannot resolve a non existing key
> SELECT map('three', 3).four;
  NULL