sql - 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
解决方案
可以用正则表达式在substring()
. 如果需要:
最后一个逗号之前的最长唯一数字字符串:
substring(data, '(\d+)\,[^,]*$')
或者您可能想要:
最后一个逗号 (',') 之前的字符串,该字符串在开头由冒号 (':') 或字符串的开头分隔。
可能是另一个正则表达式:
substring(data, '([^:]*)\,[^,]*$')
或这个:
reverse(split_part(split_part(reverse(data), ',', 2), ':', 1))
更冗长但通常比(昂贵的)正则表达式快得多。
db<>在这里摆弄
推荐阅读
- ios - 显示系统图像(SF 符号)是否使用 Swift 中的网络调用?
- python-3.x - Darknet Yolov4 Python 内存泄漏
- javascript - 如何在反应中使用 onClick 增加值
- sql - 在 FROM 子句中创建的表的别名在 WHERE 子句中无法识别
- java - 如何在不使用 TestNG.xml 文件的情况下设置 selenium 网格以进行并行执行?
- c++ - 如何在 C++/CLI Visual Studio 2019 中实现和使用向量?
- node.js - 如何在节点js事务中实现原子性
- python - 为什么 if-else 语句没有给我正确的提示,即使我输入了正确的信息?
- python - 如何使用 cv2 矩形(YOLOv5)从“results.xyxy [0]”绘制边界框?
- python - NumPy 被定义为 np 但仍然收到“NameError: np is not defined”