如何在PostgreSQL中提取子字符串模式 [英] How to extract a substring pattern in Postgresql

查看:42
本文介绍了如何在PostgreSQL中提取子字符串模式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个包含许多不一致字符串的列。其中一些包含具有一致模式'2015mmdd_AB_CD_EFG_(text)_(text)_HIJ'的子字符串,我希望将其提取出来。我觉得这是regexp和子字符串命令的交叉情况。

到目前为止,我最好的方法是相当难看的

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

这不会按预期结束输出,在输出类似于‘(.)_HIJ_BLABLAB’之后。

在这种情况下,如何有效地组合模式识别和子字符串选择?

推荐答案

假设2015mmdd实际上是某种"日期",那么实际数据包含例如20150713就可以了:

substring(col_name, '[0-9]{8}_[A-Z]{2}_[A-Z]{2}_[A-Z]{3}_([a-z]+)_([a-z]+)')
这将返回子字符串,这些字符串以8个数字开头,后跟一个下划线、一个下划线、两个大写字符、一个下划线、三个大写字符、一个下划线、一个开始括号、至少一个小写字母、一个结束括号、一个下划线、一个开始括号,然后是至少一个小写字符,最后是一个结束括号,这样的子字符串的开头是8个数字、一个下划线、两个大写字符、三个大写字符、一个下划线和一个结束括号。

如果2015mmdd确实表示2015后跟字符串mmdd,则您需要这样:

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

这篇关于如何在PostgreSQL中提取子字符串模式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆