首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在情况下无法连接

在情况下无法连接
EN

Stack Overflow用户
提问于 2019-11-13 22:02:11
回答 1查看 1.2K关注 0票数 2

我正在尝试创建一个显示年龄范围的新字段,该字段来自存储在Targeting字段中的类似json的字符串。但是,不能保证该行中存在这些数据。

样本数据(age_min/age_max并不总是存在于一起,两者都可以单独存在)

代码语言:javascript
复制
{"age_min":25,"age_max":45,"other_nonrelated":1234}

这是我如何提取年龄_min/年龄_max的方法

代码语言:javascript
复制
REGEXP_EXTRACT(Targeting, '.*\"age_min\":(\\d*).*')

在尝试使用CASE函数之后,我似乎无法使用REGEXP_EXTRACT。因此,我为age_min和age_max创建了新的字段,名为Targeting Age MinTargeting Age Max

现在,我只需要确保Targeting Age MinTargeting Age Max都不返回null,但我也不能只使用IS NOT NULL,所以我使用REGEXP_MATCH(Targeting Age Max, '\\d*')。但是,当我不能使用THEN使用CONCAT()时,我就到达了行的末尾。

当前进度(假设错误,因为它不支持CONCAT()之后的THEN)

代码语言:javascript
复制
CASE
    WHEN REGEXP_MATCH(Targeting Age Max, '\\d*') AND REGEXP_MATCH(Targeting Age Min, '\\d*') THEN CONCAT(Targeting Age Min, ' – ', Targeting Age Max)
END

期望结果

代码语言:javascript
复制
25 – 45

如果有一个更优雅的解决方案,而不需要创建多个不同的字段,比如Targeting Age MinTargeting Age Max,那就太酷了。

EN

回答 1

Stack Overflow用户

发布于 2020-02-24 18:12:55

编辑:以age_min - age_max格式显示年龄范围的CONCAT公式

代码语言:javascript
复制
CONCAT(REGEXP_EXTRACT(Targeting, '"age_min":(\\d+)'), " - ", REGEXP_EXTRACT(Targeting, '"age_max":(\\d+)'))

使用公式更新的报告图像:

原始职位(计算):age_max - age_min

这个单独计算的字段使用REGEXP_EXTRACTCAST函数捕获age_maxage_min中的值,确保它们都是数字值,然后执行减法:

代码语言:javascript
复制
CAST(REGEXP_EXTRACT(Targeting, '"age_max":(\\d+)') AS NUMBER ) - CAST(REGEXP_EXTRACT(Targeting, '"age_min":(\\d+)') AS NUMBER )

报告和GIF详细说明:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58846302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档