Snowflake - 当值不存在时确保其为 NULL 且不为空

Snowflake -When value doesn't exist make sure its NULL and not empty

我有以下 fb.org_story returns 一些行是空的,我想更改它而不是空的它显示 NULL(不创建文件格式)

select 
fb.org_story as pvt_story
from prod.facebook fb

NULLIF 比使用完整的 IFF 或 CASE 语句

有点短
SELECT
    NULLIF(fb.org_story,'') AS pvt_story
FROM prod.facebook AS fb

但是如果字符串周围有空格,您可能还需要 TRIM,因此我倾向于使用:

SELECT
    NULLIF(TRIM(fb.org_story),'') AS pvt_story
FROM prod.facebook AS fb

因此,如果您有 NULL 并且它们显示为文本 NULL,我们需要将其转换为 TEXT,然后 COALESCE、NVL、IFNULL 获得所需的输出

SELECT
    fb.org_story AS pvt_story
    ,fb.org_story::text AS as_text
    ,NVL(fb.org_story::text, 'NULL') as null_says_null_a
    ,COALESCE(fb.org_story::text, 'NULL') as null_says_null_b
    ,IFNULL(fb.org_story::text, 'NULL') as null_says_null_c
    ,IFF(fb.org_story IS NULL, 'NULL', fb.org_story::text ) as null_says_null_d
FROM VALUES (123), (null) AS fb(org_story)
PVT_STORY AS_TEXT NULL_SAYS_NULL_A NULL_SAYS_NULL_B NULL_SAYS_NULL_C NULL_SAYS_NULL_D
123 123 123 123 123 123
NULL NULL NULL NULL

你也可以使用 coalesce()

select coalesce(fb.org_story,'') AS pvt_story
FROM prod.facebook AS fb