如何使用Postgres返回最后n个单词。
我尝试使用 LEFT 方法。
SELECT DISTINCT LEFT(name, -4) FROM my_table;
但是它返回最后4个字符,我想返回最后3个字。
答案 0 :(得分:3)
您可以使用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}
零到三个单词,用空格隔开
\S+$
在文本末尾一个单词。
->创建4个单词(如果没有,则更少)。
答案 1 :(得分:0)
RIGHT()
应该
SELECT RIGHT('MYCOLUMN', 4); -- returns LUMN
UPD
您可以先转换为数组,然后再返回字符串
SELECT array_to_string(sentence[(array_length(sentence,1)-3):(array_length(sentence,1))],' ','*')
FROM
(
SELECT regexp_split_to_array('this is the one of the way to get the last four words of the string', E'\\s+') AS sentence
) foo;
答案 2 :(得分:0)