首页 > 解决方案 > PostgreSQL - 在结束分隔符之前提取字符串

问题描述

我有一列数据看起来像这样:

58,0:102,56.00
52,0:58,68
58,110
57,440.00
52,0:58,0:106,6105.95

我需要提取最后一个分隔符(',')之前的字符。

使用上面的数据,我想得到:

102
58
58
57
106

标签: sqlpostgresql

解决方案


可以用正则表达式在substring(). 如果需要:
最后一个逗号之前的最长唯一数字字符串

substring(data, '(\d+)\,[^,]*$')

或者您可能想要:
最后一个逗号 (',') 之前的字符串,该字符串在开头由冒号 (':') 或字符串的开头分隔。
可能是另一个正则表达式:

substring(data, '([^:]*)\,[^,]*$')

或这个:

reverse(split_part(split_part(reverse(data), ',', 2), ':', 1))

更冗长但通常比(昂贵的)正则表达式快得多。

db<>在这里摆弄


推荐阅读