如何使用Postgres返回最后n个单词。
我试过用左法。

SELECT DISTINCT LEFT(name, -4) FROM my_table;

但它返回最后4个字符,我想返回最后3个单词。

最佳答案

demo:db<>fiddle
可以使用SUBSTRING()函数和正则表达式执行此操作:

SELECT
    SUBSTRING(name FROM '((\S+\s+){0,3}\S+$)')
FROM my_table

这里已经解释过:How can I match the last two words in a sentence in PostgreSQL?
\S+是一个非空白字符字符串
\s+是一个空白字符字符串(例如,一个空格)
(\S+\s+){0,3}0到3个单词之间用空格隔开
\S+$文本末尾有一个单词。
->创建4个单词(如果没有更多的单词,则创建更少的单词)。

10-04 10:43