* (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 是 STRUCT`类型的列或字段名,则列出指定的可引用列或字段中的字段。 如果不存在,则列出 FROM 子句中所有可引用表中的所有列。
except_clause
适用于: Databricks SQL Databricks Runtime 11.3 LTS 及更高版本
可以选择从
select_star
子句中标识的可引用列集中删除列或字段。-
可引用的一组列中的一列。
-
对可引用的一组列所包含的列中字段的引用。 如果从
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