我正在尝试从 Nullable(string) 中提取值(其中包含电子邮件),但我不知道如何做到这一点。
我有一张桌子:
身份证 | 我的数组 | 可为空(字符串) |
---|---|---|
122 | [{"label": "工作", "value": "[email protected]", "primary": true}, {"label": "work", "value": "[email protected]", "primary": false}] | 可为空(字符串) |
我需要将电子邮件地址从值中提取到新列。 像这样:
身份证 | 电子邮件 |
---|---|
122 | [email protected] |
122 | [email protected] |
如果有人知道如何应对,请告诉我
试试这个方法:
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] │
└─────┴─────────────────┘
*/