- 类别:
:doc:`/sql-reference/functions-semistructured`(高阶)
FILTER¶
基于 Lambda 表达式中的逻辑筛选 数组。
语法¶
实参¶
array包含要筛选的元素的数组。这可以是半结构化数组,也可以是结构化数组。
lambda_expression定义每个数组元素上筛选条件的 lambda 表达式。
lambda 表达式必须仅指定一个实参,语法如下:
返回¶
此函数的返回类型是与输入数组具有相同类型的数组。返回的数组包含筛选条件返回 TRUE 的元素。
如果任一实参为 NULL,则此函数返回 NULL 且不报告错误。
使用说明¶
显式指定 lambda 实参的数据类型时,在 Lambda 调用之前,数组元素将被强制转换为指定类型。有关强制转换的信息,请参阅 数据类型转换。
如果筛选条件计算结果为 NULL,则筛选掉相应的数组元素。
示例¶
以下示例使用 FILTER 函数。
数组元素大于某个值的筛选器¶
使用 FILTER 函数,返回数组中值大于或等于 50 的对象:
非 NULL 数组元素的筛选器¶
使用 FILTER 函数返回非 NULL 的数组元素:
筛选表中大于或等于某个值的数组元素¶
假设您有一个名为 orders 的表,包含 order_id、order_date 和 order_detail 列。order_detail 列是包含行项目、其购买数量和小计的数组。该表包含两行数据。以下 SQL 语句会创建此表并插入行:
使用 FILTER 函数,返回小计大于或等于 1500 的订单:
在 lambda 表达式中引用表列,以筛选表数据中的数组元素¶
创建一个包含一列类型为 ARRAY 和另一列类型为 INT 的表:
使用 FILTER 函数返回每行中数组元素值小于 col2 中的值的值: