* (star) 子句

适用于: 勾选“是” Databricks SQL 勾选“是” Databricks Runtime

一种简略写法,可用于命名 FROM 子句中的所有可引用列,或 FROM 子句中特定表引用的列或字段。

列或字段的列表是按照表格引用的顺序和每个表引用中的列顺序排列的。 如果是字段,则按结构中字段的顺序进行排序。

_metadata 列不包括在此列表中。 必须显式引用它。

在 Databricks Runtime 15.0 之前,star (*) 子句只能在 SELECT 列表中使用。

语法

star_clause
   [ name . ] * [ except_clause ]

except_clause
   EXCEPT ( { column_name | field_name } [, ...] )

参数设置

  • name

    如果 name 是表名,则列出指定的可引用表中的列。 如果 name 是 STRUCT`类型的列或字段名,则列出指定的可引用列或字段中的字段。 如果不存在,则列出 FROM 子句中所有可引用表中的所有列。

  • except_clause

    适用于: 勾选“是” Databricks SQL 勾选“是” Databricks Runtime 11.3 LTS 及更高版本

    可以选择从 select_star 子句中标识的可引用列集中删除列或字段。

    • column_name

      可引用的一组列中的一列。

    • field_name

      对可引用的一组列所包含的列中字段的引用。 如果从 STRUCT 中排除所有字段,则结果为空的 STRUCT

    每个名称都必须引用可引用的一组列中包含的列或其字段。 否则,Databricks SQL 会引发 UNRESOLVED_COLUMN 错误。 如果名称重叠或不是唯一的,Databricks SQL 会引发 EXCEPT_OVERLAPPING_COLUMNS 错误。

示例

– Return all columns in the FROM clause
> SELECT * FROM VALUES(1, 2) AS TA(c1, c2), VALUES(‘a’, b’) AS TB(ca, cb);
  1  2  a  b

– Return all columns from TA
> SELECT TA.* FROM VALUES(1, 2) AS TA(c1, c2), VALUES(‘a’, b’) AS TB(ca, cb);
  1  2

– Return all columns except TA.c1 and TB.cb
> SELECT * EXCEPT (c1, cb)  FROM VALUES(1, 2) AS TA(c1, c2), VALUES(‘a’, b’) AS TB(ca, cb);
  2  a

– Return all columns, but strip the field x from the struct.
> SELECT TA.* EXCEPT (c1.x) FROM VALUES(named_struct(‘x’, x, ‘y’, ‘y’), 2) AS (c1, c2), VALUES(‘a’, b’) AS TB(ca, cb);
  { y } 2 a b

-- Return all fields in c1.
> SELECT c1.* FROM VALUES(named_struct(‘x’, x, ‘y’, ‘y’), 2) AS (c1, c2), VALUES(‘a’, b’) AS TB(ca, cb);
  x  y

– Return the first not-NULL column in TA
> SELECT coalesce(TA.*)  FROM VALUES(1, 2) AS TA(c1, c2), VALUES(‘a’, b’) AS TB(ca, cb);
  1