Vertica中移除指定下划线分隔段实现值截断的技术需求
在Vertica中移除下划线分隔字符串的第3段和第7段
需求说明
给定以下划线分隔的字符串,需要移除其中的第3段和第7段,保留其余部分并重新拼接成新字符串。示例如下:
- 输入:
source_data_e0025895_pw2_px_77892_xxxx→ 输出:source_data_pw2_px_77892 - 输入:
east_match_a569820_kw2_lk_8975_p2585→ 输出:east_match_kw2_lk_8975
解决方案
利用Vertica内置的SPLIT_PART函数拆分字符串,再通过CONCAT_WS函数将需要保留的段重新拼接。
假设待处理字段名为str_col,所在表为your_table,执行以下SQL即可得到截断后的结果:
SELECT CONCAT_WS('_', SPLIT_PART(str_col, '_', 1), SPLIT_PART(str_col, '_', 2), SPLIT_PART(str_col, '_', 4), SPLIT_PART(str_col, '_', 5), SPLIT_PART(str_col, '_', 6) ) AS truncated_str FROM your_table;
函数说明
SPLIT_PART(str, delimiter, position):将字符串str按指定分隔符delimiter拆分,返回第position段的内容。CONCAT_WS(delimiter, str1, str2, ...):用指定分隔符delimiter拼接多个字符串,自动忽略NULL值(若某段不存在时不会额外添加分隔符)。
示例验证
对输入字符串source_data_e0025895_pw2_px_77892_xxxx:
- 拆分后各段依次为:
source、data、e0025895、pw2、px、77892、xxxx - 取第1、2、4、5、6段拼接,最终得到
source_data_pw2_px_77892,与预期一致。
内容的提问来源于stack exchange,提问作者karan_kn
相关产品推荐
相关产品推荐

