[英]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.