sql - 提取最后一次出现字符之前的字符串

标签 sql postgresql

我的规范:
Postgres 9.6.6,最新的 Ubuntu LTS

我需要在字符最后一次出现之前提取字符串的一部分:
例如带有“.”

'ab.cde.fghi' -> 'ab.cde'

此刻这是我的代码:

select 
 substr('ab.cde.fghi',1,length('ab.cde.fghi')-strpos(reverse('ab.cde.fghi'),'.'))

我正在寻找一种更实用/更优雅的方式来做到这一点。 如有任何建议,我们将不胜感激。

谢谢
佩雷斯。

最佳答案

使用a regular expression:

select substring('ab.cde.fghi' from '(.*)\.')

 substring 
-----------
 ab.cde
(1 row)

关于sql - 提取最后一次出现字符之前的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52206724/

相关文章:

mysql - 如何从初始行创建多行

sql - 间歇性地合并两个排序的结果

sql - 尝试查找不同的数据时返回相同的结果

sql - Azure DevOps 托管代理 : The 'SQLNCLI11.1' provider is not registered on the local machine error

mysql - 查找日期在从现在起 7 天之前的记录。使用日期时间格式

sql - 将临时表传递给 EXEC sp_executesql

sql - 具有重置值的累加和然后恢复

postgresql - 在 MAC OS X 10.6 上为 PostgreSQL 设置 SHMMAX 等值

sql - 为什么 PostgreSQL COPY 命令不允许数组中存在 NULL 值?

sql - 如何组合 DISTINCT 和 COUNT 聚合值