首页 > 解决方案 > 如何根据字符获取子字符串并从右侧开始读取字符串

问题描述

我在一列上有以下值:

DB3-0800-VRET,
DB3-0800-IC,
IB-TZ-850-IB,
O11FS-OB ...

我想从每个值中删除破折号后的最后一部分。我需要有以下结果:

DB3-0800-VRET -> DB3-0800,
DB3-0800-IC   -> DB3-0800,
O11FS-OB      -> O11FS

我尝试使用 RedShift 的 SPLIT_PART 函数,但没有任何运气。如果有人知道正则表达式来选择我需要的部分,我将不胜感激。

标签: sqlregexamazon-redshift

解决方案


在 Postgres 和 Redshift 中,您应该能够使用regexp_replace()

select regexp_replace(str, '-[^-]+$', '')

推荐阅读