簡體   English   中英

PostgreSQL在逗號分隔的值列表中獲取最后一個值

[英]PostgreSQL get last value in a comma separated list of values

在PostgreSQL表中,我有一列,其值類似於

AX,B,C
A,BD
X,Y
J,K,L,M,N

簡而言之,每條記錄的列中都會有一些逗號分隔的字符串。 我想獲得每個記錄中的最后一個。 我結束了這個。

select id, reverse(substr(reverse(mycolumn),1,position(',' in reverse(mycolumn)))) from mytable order by id ; 

有更容易的方法嗎?

使用regexp_replace

select id, regexp_replace(mycolumn, '.*,', '')
from mytable
order by id;

我會這樣:

select reverse(split_part(reverse(myColumn), ',', 1))

有更容易的方法嗎?

使用當前數據,Gordon的答案最適合imo。 其他選項將是正則表達式(混亂),或將列轉換為text []數組,例如('{' || col || '}')::text[]或其變體。

如果您在列中使用text []數組而不是純文本,則需要直接使用數組函數:

select col[array_length(col, 1)]

http://www.postgresql.org/docs/current/static/functions-array.html

虛擬數據示例:

 with bar as (
 select '{a,b,c}'::text[] as foo
 )
 select foo[array_length(foo, 1)] from bar;

當然,您也可以創建parse_csv()函數或get_last_csv_value()函數來避免編寫上述內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM