exists 函数

适用于:check marked yes Databricks SQL check marked yes Databricks Runtime

如果 expr 中任何元素的 func 为 true,或者 query 返回至少一行,则返回 true。

语法

exists(expr, func)
exists(query)

参数

  • expr:一个数组表达式。
  • func:一个 Lambda 函数。
  • query:任何查询

返回

BOOLEAN。

lambda 函数必须生成一个布尔值并对一个参数进行运算,该参数表示数组中的一个元素。

exists(query) 只能用于 WHERE 子句和少数其他特定情况。

示例

> SELECT exists(array(1, 2, 3), x -> x % 2 == 0);
 true
> SELECT exists(array(1, 2, 3), x -> x % 2 == 10);
 false
> SELECT exists(array(1, NULL, 3), x -> x % 2 == 0);
 NULL
> SELECT exists(array(0, NULL, 2, 3, NULL), x -> x IS NULL);
 true
> SELECT exists(array(1, 2, 3), x -> x IS NULL);
 false

> SELECT count(*) FROM VALUES(1)
   WHERE exists(SELECT * FROM VALUES(1), (2), (3) AS t(c1) WHERE c1 = 2);
  1
> SELECT count(*) FROM VALUES(1)
   WHERE exists(SELECT * FROM VALUES(1), (NULL), (3) AS t(c1) WHERE c1 = 2);
  0
> SELECT count(*) FROM VALUES(1)
     WHERE NOT exists(SELECT * FROM VALUES(1), (NULL), (3) AS t(c1) WHERE c1 = 2);
  1