Spark SQL中如何对比key与email列子串提取合规纯数字ID
修改后的Spark SQL语句
SELECT CASE WHEN type = 'KEY' AND LENGTH(key) > 0 THEN CASE WHEN REPLACE(key, email, '') RLIKE '^[0-9]+$' THEN REPLACE(key, email, '') ELSE '' END ELSE '' END AS id FROM input
实现逻辑说明
- 外层CASE直接匹配规则1:仅当type为KEY且key长度大于0时进入后续处理,其余场景直接返回空值
- 内层CASE同时覆盖规则2和规则3:首先通过
REPLACE(key, email, '')从key中剔除email部分得到ID候选值,再用正则^[0-9]+$校验候选值是否仅由数字组成,符合要求则返回候选值,不符合则返回空值
上述语句在你的样例输入上执行后,输出结果和要求的期望输出完全一致。
内容的提问来源于stack exchange,提问作者Only developer
相关产品推荐
相关产品推荐

