Snowflake SQL中如何提取字符串首组4位数字前的无下划线子串
Snowflake SQL 实现方案
核心逻辑是通过正则匹配定位第一组4位数字的位置,再做截取和字符替换即可实现需求,用到的Snowflake内置函数说明如下:
REGEXP_INSTR(字段, 正则规则):返回符合正则规则的内容首次出现的下标,此处规则\\d{4}匹配连续4位数字SUBSTRING(字段, 起始位置, 长度):按指定范围截取字符串REPLACE(字段, 要替换的字符, 替换为的字符):移除字符串中所有目标字符
基础实现(所有FIELD_1都包含4位数字的场景)
SELECT FIELD_1, REPLACE(SUBSTRING(FIELD_1, 1, REGEXP_INSTR(FIELD_1, '\\d{4}') - 1), '_', '') AS FIELD_2 FROM TABLE_1;
兼容实现(存在FIELD_1不含4位数字的场景)
如果部分行的FIELD_1不存在连续4位数字,可以增加条件判断避免返回空值,默认返回全字段去除下划线的结果:
SELECT FIELD_1, CASE WHEN REGEXP_INSTR(FIELD_1, '\\d{4}') > 0 THEN REPLACE(SUBSTRING(FIELD_1, 1, REGEXP_INSTR(FIELD_1, '\\d{4}') - 1), '_', '') ELSE REPLACE(FIELD_1, '_', '') END AS FIELD_2 FROM TABLE_1;
内容的提问来源于stack exchange,提问作者Justine Mit
相关产品推荐
相关产品推荐

