如何从 ClickHouse 中的 Nullable(string) 中提取粒子值

问题描述 投票:0回答:1

我正在尝试从 Nullable(string) 中提取值(其中包含电子邮件),但我不知道如何做到这一点。

我有一张桌子:

身份证 我的数组 可为空(字符串)
122 [{"label": "工作", "value": "[email protected]", "primary": true}, {"label": "work", "value": "[email protected]", "primary": false}] 可为空(字符串)

我需要将电子邮件地址从值中提取到新列。 像这样:

身份证 电子邮件
122 [email protected]
122 [email protected]

如果有人知道如何应对,请告诉我

nullable clickhouse
1个回答
0
投票

试试这个方法:

SELECT
    id,
    arrayJoin(
        arrayMap(x -> JSONExtractString(x, 'value'), 
            JSONExtractArrayRaw(coalesce(data, '')))) AS email
FROM
(
    SELECT
        122 AS id,
        '[{"label": "work", "value": "[email protected]", "primary": true}, {"label": "work", "value": "[email protected]", "primary": false}]' AS data
    UNION ALL
    SELECT
        121,
        NULL
)

/*
┌──id─┬─email───────────┐
│ 122 │ [email protected] │
│ 122 │ [email protected] │
└─────┴─────────────────┘
*/
© www.soinside.com 2019 - 2024. All rights reserved.