首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按字母顺序排列带有逗号分隔值的字段

按字母顺序排列带有逗号分隔值的字段
EN

Stack Overflow用户
提问于 2021-09-15 16:35:31
回答 2查看 86关注 0票数 0

我目前正在处理一个Talend流,我在排序一个包含逗号分隔值的字段时遇到了问题。这个字段是关于国家的,它可以包含不同的国家。我想知道是否有一种方法可以在字段中按字母顺序排列这些值。

我不知道是用Talend还是直接用sql查询更容易。

这里有一个这个字段的错误值的例子:“葡萄牙,佛,摩洛哥,北大西洋,西班牙”,如果可能的话,我希望它是按字母顺序排序的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-09-15 17:08:24

有了一个适当的规范化数据模型,这将会容易得多。

要获得排序字符串,首先需要取消嵌套元素,然后将它们聚合回排序字符串。

代码语言:javascript
复制
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

您可以将其放入一个函数中,以使您的生活更轻松:

代码语言:javascript
复制
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;

然后你可以像这样使用它:

代码语言:javascript
复制
select other_columns
       sort_csv_value(countries) as countries_sorted
from the_table
票数 0
EN

Stack Overflow用户

发布于 2021-09-16 10:53:06

下面是它在Talend中的实现方式:

输出将为:

|=---=||国家||=摩洛哥、北大西洋、葡萄牙、西班牙|‘---’

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69196841

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档