如何在PostgreSQL中提取子字符串模式 [英] How to extract a substring pattern in Postgresql
本文介绍了如何在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屋!
查看全文