我目前正在做一個Talend流程,我遇到了一個問題,就是對一個包含逗號分隔值的欄位進行排序。這個欄位是關于國家的,它可以包含不同的國家。我想知道是否有辦法在欄位內按字母順序排列這些值。
我不知道是用Talend還是直接用sql查詢更容易做到這一點。
下面是這個欄位的一個錯誤值的例子。"葡萄牙、佛得角、摩洛哥、北大西洋、西班牙",如果可能的話,我希望它能按字母順序排列。
uj5u.com熱心網友回復:
如果有一個正確的規范化的資料模型,這將是非常容易的。
為了得到一個排序的字串,你需要首先解除元素的嵌套,然后將它們聚合成一個排序的字串。
select other_columns
(select string_agg(country, ' ,' order by country)
from unnest(string_to_array(country, ',') as t(country)
) as countries_sorted
from the_table
你可以把它放到一個函式中,使你的生活更容易:
你可以把它放到一個函式中。
create function sort_csv_value(P_input text)
returns text
as
$$
select string_agg(word, ', ' order by word)
from unnest(string_to_array(p_input, ', '))。
$$
語言 sql; $$
不變的。
然后你可以這樣使用:
select other_columns
sort_csv_value(country) as countries_sorted
from the_table
uj5u.com熱心網友回復:
在Talend中是這樣做的 :
輸出將是:
輸出將是:
|=------------------------------------------------------------=| |國家 | |=------------------------------------------------------------=| |佛得角 , 摩洛哥 , 北大西洋 , 葡萄牙 , 西班牙|| '--------------------------------------------------------------'
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/307987.html
標籤:
下一篇:PostgresSELECTidLAG(id)OVER(ORDERBYid)FROMinvoiceWHEREid=2









