以逗号分隔值按字母顺序排列字段
Alphabetically order a field with comma separated values
我目前正在处理 Talend 流程,但在订购包含逗号分隔值的字段时遇到问题。这个字段是关于国家的,它可以包含不同的国家。我想知道是否有办法在字段中按字母顺序排列这些值。
我不知道使用 Talend 还是直接使用 sql 查询更容易。
以下是此字段错误值的示例:“葡萄牙、佛得角、摩洛哥、北大西洋、西班牙”,我希望尽可能按字母顺序排列。
使用正确规范化的数据模型,这会容易得多。
要获得排序后的字符串,您需要先取消嵌套元素,然后将它们聚合回排序后的字符串。
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
这是在 Talend 中的实现方式:
输出将是:
|=---------------------------------------- ------------------=|
|国家|
|=-------------------------------------------- ----------=|
|佛得角、摩洛哥、北大西洋、葡萄牙、西班牙|
'------------------------------------------------ --------------'
我目前正在处理 Talend 流程,但在订购包含逗号分隔值的字段时遇到问题。这个字段是关于国家的,它可以包含不同的国家。我想知道是否有办法在字段中按字母顺序排列这些值。
我不知道使用 Talend 还是直接使用 sql 查询更容易。
以下是此字段错误值的示例:“葡萄牙、佛得角、摩洛哥、北大西洋、西班牙”,我希望尽可能按字母顺序排列。
使用正确规范化的数据模型,这会容易得多。
要获得排序后的字符串,您需要先取消嵌套元素,然后将它们聚合回排序后的字符串。
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
这是在 Talend 中的实现方式:
输出将是:
|=---------------------------------------- ------------------=| |国家| |=-------------------------------------------- ----------=| |佛得角、摩洛哥、北大西洋、葡萄牙、西班牙| '------------------------------------------------ --------------'