繁体   English   中英

Postgres:提取字符串中的最后一个子字符串

[英]Postgres: Extract the last substring in a string

我有一个像

We would like to approve your call, however you have been denied because of reasons

我想提取主体上“批准您的电话”或“已被拒绝”的最后一次出现,表明它是被批准还是被拒绝。 我必须使用特定的子字符串,因为这是基于表单的,而不仅仅是“批准”和“拒绝”。

我的想法是使用 regexp_match 提取所有外观,然后抓取最后一行,但是无法从 regexp_match 的结果中获取最后一行。

在 Postgres 9.4+ 上,您可以使用WITH ORDINALITY来标识regexp_matches结果中的最后一行:

SELECT m
FROM regexp_matches('abc', '.', 'g') WITH ORDINALITY r(m,n)
ORDER BY n DESC
LIMIT 1

在旧版本中,您可以使用窗口函数来执行此操作(尽管它确实依赖于结果集的自然顺序,通常最好避免这种顺序):

SELECT last_value(m) OVER ()
FROM regexp_matches('abc', '.', 'g') r(m)
LIMIT 1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM