如何在 Postgresql 中提取子字符串模式

2024-02-20

我有一列包含很多不一致的字符串。其中一些包含具有一致模式的子字符串'2015mmdd_AB_CD_EFG_(text)_(text)_HIJ'我想提取它。我觉得这是正则表达式和子字符串命令的交叉情况。

到目前为止我最好的方法是相当丑陋的

substring(col_name, '........_.._.._..._.+_.+_...')

它不会根据需要结束输出,而是输出类似于“(...)_HIJ_blablabla”。

在这种情况下,如何有效地将模式识别和子串选择结合起来?


假如说2015mmdd实际上意味着某种“日期”,因此真实数据包含例如20150713以下将做:

substring(col_name, '[0-9]{8}_[A-Z]{2}_[A-Z]{2}_[A-Z]{3}_\([a-z]+\)_\([a-z]+\)')

这将返回以 8 个数字开头,后跟一个下划线,后跟两个大写字符,后跟一个下划线,后跟两个大写字符,再后跟一个下划线,后跟三个大写字符,后跟一个下划线,后跟一个左括号,最后跟 at租用一个小写字母,后跟一个右括号,后跟一个下划线,后跟一个左括号,后跟至少一个小写字符,最后跟一个右括号。

If 2015mmdd确实意味着2015后面跟着字符串mmdd那么你需要这个:

substring(col_name, '[0-9]{4}mmdd_[A-Z]{2}_[A-Z]{2}_[A-Z]{3}_\([a-z]+\)_\([a-z]+\)')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Postgresql 中提取子字符串模式 的相关文章

随机推荐