Presto 检查是不是为 NULL 并返回默认值(NVL 模拟)

Posted

技术标签:

【中文标题】Presto 检查是不是为 NULL 并返回默认值(NVL 模拟)【英文标题】:Presto check if NULL and return default (NVL analog)Presto 检查是否为 NULL 并返回默认值(NVL 模拟) 【发布时间】:2017-09-02 16:12:03 【问题描述】:

Presto DB 中有 NVL 的类似物吗?

我需要检查一个字段是否为 NULL 并返回一个默认值。

我以某种方式解决了这个问题:

SELECT
  CASE 
    WHEN my_field is null THEN 0 
    ELSE my_field 
  END
FROM my_table

但我很好奇是否有什么东西可以简化这段代码。

【问题讨论】:

【参考方案1】:

用于此的 ISO SQL 函数是 COALESCE

coalesce(my_field,0)

https://prestodb.io/docs/current/functions/conditional.html

附: COALESCE 可以与多个参数一起使用。它将返回第一个(从左侧开始)非 NULL 参数,如果未找到,则返回 NULL。

例如

coalesce (my_field_1,my_field_2,my_field_3,my_field_4,my_field_5)

【讨论】:

同样适用于 AWS Athena 以防万一。

以上是关于Presto 检查是不是为 NULL 并返回默认值(NVL 模拟)的主要内容,如果未能解决你的问题,请参考以下文章

Java - 检查 Not Null/Empty 否则分配默认值

检查整数是不是为 0 并返回布尔值的简短方法

检查 DatePicker 值是不是为空

检查值是不是为“null”

Scala 自定义集合返回 null 列表作为默认值

我正在尝试登录并检查用户是不是存在,但我的执行标量一直返回 null,我不知道为啥?