字符串列排序Sql select

时间:2020-01-13 14:53:38

标签: sql postgresql

我在sql查询中遇到问题,正在向我返回混乱的结果,我想指导您在逗号前输入数字,我不知道您是否可以按照示例进行操作:

SELECT responsaveis FROM public.pasrem_view where seqalu = 444111;

结果:

"DIOGO LUIZ BORDON DE SOUZA-89812239120-FILIACAO2, DIOGO LUIZ BORDON DE SOUZA-89812239120-FILIACAO2,DIOGO LUIZ BORDON DE SOUZA-89812239120-FILIACAO2, DIOGO LUIZ BORDON DE SOUZA-89812239120-FILIACAO2,LILIANA LETICIA CARVALHO THEODORO-00163264155-FILIACAO1,DIOGO LUIZ BORDON DE SOUZA-89812239120-FILIACAO2, DIOGO LUIZ BORDON DE SOUZA-89812239120-FILIACAO2,DIOGO LUIZ BORDON DE SOUZA-89812239120-FILIACAO2,DIOGO LUIZ BORDON DE SOUZA-89812239120-FILIACAO2"

我希望您像这样回到我身边

"LILIANA LETICIA CARVALHO THEODORO-00163264155-FILIACAO1,DIOGO LUIZ BORDON DE SOUZA-89812239120-FILIACAO2,DIOGO LUIZ BORDON DE SOUZA-89812239120-FILIACAO2,DIOGO LUIZ BORDON DE SOUZA-89812239120-FILIACAO2,DIOGO LUIZ BORDON DE SOUZA-89812239120-FILIACAO2,DIOGO LUIZ BORDON DE SOUZA-89812239120-FILIACAO2,DIOGO LUIZ BORDON DE SOUZA-89812239120-FILIACAO2,DIOGO LUIZ BORDON DE SOUZA-89812239120-FILIACAO2,DIOGO LUIZ BORDON DE SOUZA-89812239120-FILIACAO2"

请记住,这只是一个结果,并且该字段是由“,”分隔的字符串。

示例:https://dbfiddle.uk/?rdbms=postgres_12&fiddle=cdf790d74b053ef8289e428eed0bd62e

2 个答案:

答案 0 :(得分:1)

您需要首先将元素嵌套到行中(本质上是“即时”规范化数据模型),然后可以将其聚合回排序后的字符串:

SELECT string_agg(trim(t.element), ',' order by t.element desc)
FROM public.pasrem_view 
  cross join unnest(string_to_array(responsaveis, ',')) as t(element)
where seqalu = 444111;

Online example

答案 1 :(得分:0)

您的问题是指逗号前的数字。但是样本数据中没有逗号。对于您的结果,降序排序将起作用:

SELECT responsaveis
FROM public.pasrem_view 
WHERE seqalu = 444111
ORDER BY responsaveis DESC;
相关问题