我目前正在处理一个Talend流,我在排序一个包含逗号分隔值的字段时遇到了问题。这个字段是关于国家的,它可以包含不同的国家。我想知道是否有一种方法可以在字段中按字母顺序排列这些值。
我不知道是用Talend还是直接用sql查询更容易。
这里有一个这个字段的错误值的例子:“葡萄牙,佛,摩洛哥,北大西洋,西班牙”,如果可能的话,我希望它是按字母顺序排序的。
发布于 2021-09-15 17:08:24
有了一个适当的规范化数据模型,这将会容易得多。
要获得排序字符串,首先需要取消嵌套元素,然后将它们聚合回排序字符串。
select other_columns
(select string_agg(country, ',' order by country)
from unnest(string_to_array(countries, ',')) 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, ','));
$$
language sql
immutable;然后你可以像这样使用它:
select other_columns
sort_csv_value(countries) as countries_sorted
from the_table发布于 2021-09-16 10:53:06
下面是它在Talend中的实现方式:






输出将为:
|=---=||国家||=摩洛哥、北大西洋、葡萄牙、西班牙|‘---’
https://stackoverflow.com/questions/69196841
复制相似问题