PostgreSQL返回最后n个字

时间:2019-04-17 12:42:32

标签: postgresql

如何使用Postgres返回最后n个单词。

我尝试使用 LEFT 方法。

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

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

3 个答案:

答案 0 :(得分: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}零到三个单词,用空格隔开

\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;

DEMO HERE

答案 2 :(得分:0)

一种方法是使用/uploads将字符串分成包含的单词,然后使用该数组中的最后3个单词将字符串放回去。

regexp_split_to_array()

db<>fiddle