文章 查看内容

Spark逻辑函数

Spark逻辑函数

68 0 函数专题 2024-7-15 11:05 发布者: 观小凡

逻辑计算,判断某个特定条件为真还是假(TRUE/FALSE,布尔值),默认返回特定条件为真(TRUE)的数据。一般多用于数据映射、校验或者筛选。
 

1. 概述

      逻辑计算,判断某个特定条件为真还是假(TRUE/FALSE,布尔值),默认返回特定条件为真(TRUE)的数据。一般多用于数据映射、校验或者筛选。

2. 函数列表

2.1. 基础逻辑判断

用途

函数

示例

[No]列值分别为1,2,3,4,5

结果

且,满足全部条件

AND

筛选:[No] >1 AND [No] <=4

2, 3, 4

或,满足任一条件

OR

筛选:[No] <1 OR [No] >4

5

属于,判断表达式是否属于集合

IN

筛选:[No] IN (1,3,5,7,9)

1, 3, 5

区间, 包含开始值和结束值

BETWEEN AND

筛选:[No] BETWEEN 2 AND 4

2, 3, 4

否,返回不符合表达式的数据

NOT

筛选:[No] NOT IN (1,3,5,7,9)

2, 4

筛选:[No] NOT BETWEEN 2 AND 4

1, 5

条件判断

IF

IF([No]>0 and [No]<=3,'1-3','3+')

1-3, 1-3, 1-3, 3+, 3+

CASE WHEN

(更适合多条件判断)

CASE                                              

WHEN [No] between 1 and 2 THEN '1-2'  WHEN [No] between 3 and 4 THEN '3-4' WHEN [No]>=5 THEN '5+' 

END

1-2, 1-2,

3-4, 3-4,   

5+

字符串模糊匹配(配合通配符使用

LIKE/ILIKE

'guanBI' like '%BI' (区分大小写)

'guanBI' ilike '%bi' (不区分大小写)

true


注意事项:

      逻辑函数一般返回 TRUE/FALSE,但如果字段值为 NULL 时则返回 NULL,例如 NULL NOT IN (1,3,5,7,9)返回结果为空(即NULL)。如果只想要返回 TRUE/FALSE,需要对 NULL 进行判断并处理,可参考下面列表函数。

2.2. 空值(NULL)判断函数

用途

函数

示例

[expr1]: null; [expr2]: A; [expr3]: B

结果

判断是否为 null 值

isnull(expr);
expr is null

isnull([expr1]);
[expr2] is null

 true       false

判断是否非 null 值

isnotnull(expr);
expr is not null

isnotnull([expr1]);
[expr2] is not null

 false       true

把 expr1 里的 null 值替换为 expr2

ifnull(expr1, expr2)

ifnull([expr1],'C')

 C

nvl(expr1, expr2)

nvl([expr1],'C')

 C

如果 expr1 不为 null 返回 expr2,否则返回 expr3

nvl2(expr1, expr2, expr3)

nvl2([expr1],[expr2],[expr3])

 B

返回第一个非 null 值的值

coalesce(expr1, expr2, ...)

coalesce([expr1],[expr2],[expr3])

 A

如果2个 expr 相同则返回 null,否则返回 expr1

nullif(expr1, expr2)

nullif([expr2],[expr1])

 A

判断两个值是否相等,两者都为null需返回true,有一个null返回false

equal_null(expr1, expr2)

equal_null([expr1],[expr2])

 false

expr1 <=> expr2

[expr1]<=> null

 true

判断是否为空字符串

expr=''
expr <>''

[expr1]='' ;                                  [expr2]<>''

 null       true




路过

雷人

握手

鲜花

鸡蛋

评论

您需要登录后才可以发表言论 登录立即注册
微信服务号
联系我们
电话:400-880-0750
邮箱:hello@guandata.com
Copyright © 2001-2024 观远社区 版权所有 All Rights Reserved. 浙 ICP 备15006424号-3
去评论 去发文 返回顶部
返回顶部