SQL 表达式 (SQL expression)
适用于: Databricks SQL Databricks Runtime
表达式是一个公式,它使用函数或运算符根据文本或者对列、字段或变量的引用来计算结果。
语法
{ literal |
named_parameter_marker |
unnamed_parameter_marker |
column_reference |
field_reference |
parameter_reference |
CAST expression |
CASE expression |
expr operator expr |
operator expr |
expr [ expr ] |
function_invocation |
( expr ) |
( expr, expr [, ... ] ) |
scalar_subquery }
scalar_subquery
( query )
expr [ expr ]
中的括号是真实括号,不指示可选语法。
parameters
literal
数据类型中介绍了类型的文本。
-
提交 SQL 语句的 API 提供的值的命名和类型化占位符。
-
提交 SQL 语句的 API 提供的值的未命名和类型化占位符。
column_reference
对表中的列或列别名的引用。
field_reference
对 STRUCT 类型中的字段的引用。
-
使用函数正文对 SQL 用户定义函数的参数的引用。 引用可以使用参数的非限定名称,或者可以使用函数名称来限定名称。 解析标识符时,参数将构成最外层范围。
-
将参数强制转换为不同类型的表达式。
-
允许条件求值的表达式。
expr
与
operator
结合的表达式自身,或充当函数参数的表达式。-
一元运算符或二进制运算符。
-
对数组元素或映射键的引用。
-
对内置函数或用户定义函数的调用。
有关详细信息,请参阅 function_invocation。
( expr )
重写运算符优先级的强制优先级。
( expr, expr [, … ] )
创建两个或多个字段的
struct
。 此表示法与 struct 函数同义。-
( query )
基于查询的表达式,该查询必须返回单列且最多返回一行。
每个函数和运算符的页面介绍了其参数所需的数据类型。 Azure Databricks 使用 SQL 数据类型规则执行隐式强制转换为所需类型的操作。 如果运算符或函数对于提供的参数无效,Azure Databricks 会引发错误。
有关名称解析的详细信息,请参阅列、字段、参数和变量解析。
常数表达式
仅基于不带参数的文本或确定性函数的表达式。 Azure Databricks 可以执行表达式并在通常需要文本的位置使用结果常量。
布尔表达式 (Boolean expression)
结果类型为 BOOLEAN
的表达式。 布尔表达式有时也称为“条件”或“谓词”。
标量子查询
( query )
形式的表达式。 查询必须返回一个包含一列且最多一行的表。
如果查询未返回任何行,则结果为 NULL
。
如果查询返回多行,Azure Databricks 将返回错误。
否则,结果即为查询返回的值。
简单表达式
不包含 query
的表达式,例如标量子查询或 EXISTS
谓词。
示例
> SELECT 1;
1
> SELECT (SELECT 1) + 1;
2
> SELECT 1 + 1;
2
> SELECT 2 * (1 + 2);
6
> SELECT 2 * 1 + 2;
4
> SELECT substr('Spark', 1, 2);
Sp
> SELECT c1 + c2 FROM VALUES(1, 2) AS t(c1, c2);
3
> SELECT a[1] FROM VALUES(array(10, 20)) AS T(a);
20
> SELECT true;
true
> SELECT (c1, (c2, c3)) FROM VALUES(1, 2, 3) AS T(c1, c2, c3);
{"c1":1,"col2":{"c2":2,"c3":3}}