如何使用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个单词(如果没有更多的单词,则创建更少的单词)。