sql - 在postgresql中拆分字符串和排序

标签 sql arrays postgresql sorting split

我在 postgresql 中有一个表,其中的文本列具有如下值:

column
-----------
CA;TB;BA;CB
XA;VA
GA;BA;LA

我想对每个值中的元素进行排序,以便查询结果如下:

column
-----------
BA;CA;CB;TB
VA;XA
BA;GA;LA

我尝试过使用 string_to_arrayregexp_split_to_arrayarray_agg,但我似乎并没有接近它。

谢谢。

最佳答案

我希望这很容易理解:

WITH tab AS (
    SELECT
        *
    FROM
        unnest(ARRAY[
            'CA;TB;BA;CB', 
            'XA;VA', 
            'GA;BA;LA']) AS txt
)
SELECT
    string_agg(val, ';')
FROM (
    SELECT
        txt,
        regexp_split_to_table(txt, ';') AS val
    FROM
        tab
    ORDER BY 
        val
) AS sub
GROUP BY
    txt;

首先,我将值拆分为行 (regexp_split_to_table) 并排序。然后 group by 原始值并再次加入 string_agg

输出:

BA;CA;CB;TB
BA;GA;LA
VA;XA

关于sql - 在postgresql中拆分字符串和排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47780880/

相关文章:

c# - 使用 C# 查询 MariaDB 数据库

c# - 我不想在存储过程中转换的复杂 SQL

mysql sql : how to cumulate count ?(计数总和)

json - PostgreSQL 将 column_1 text[] 类型转换为 column_2 json 类型

ruby - rake 中止! PG::ConnectionBad: fe_sendauth: 没有提供密码 sinatra

sql - 第 2 部分 : how to get the Sum of a partition based query without actually pivoting

java - 计算数组中的出现次数 (Java)

JavaScript - 过滤嵌套数组

python - 加速 Python 中的数学计算

postgresql - xlog - 知道两个数据库是否来自源