我有一个像
这样的字符串We would like to approve your call, however you have been denied because of reasons
我想要提取最后外观"批准您的通话"或者"被拒绝"在校长,表明它是否被批准或拒绝。我必须使用特定的子字符串,因为这是基于一个表单,而不仅仅是"批准"并且"拒绝"。
我的想法是使用regexp_match来取出所有外观,然后抓住最后一行,但是没有办法从regexp_match的结果中获取最后一行。
答案 0 :(得分:1)
在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
在旧版本中,您可以使用window function执行此操作(尽管它确实依赖于结果集的自然顺序,这通常是最好的避免):
SELECT last_value(m) OVER ()
FROM regexp_matches('abc', '.', 'g') r(m)
LIMIT 1