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
我有以下 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