Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
postgresql按每个元素中的字对数组进行排序_Postgresql_Postgresql 9.1_Postgresql 9.2 - Fatal编程技术网

postgresql按每个元素中的字对数组进行排序

postgresql按每个元素中的字对数组进行排序,postgresql,postgresql-9.1,postgresql-9.2,Postgresql,Postgresql 9.1,Postgresql 9.2,有一个字符串数组 数组['CAT','CAT-DOG-CAT','DOG-CAT'] 现在我想根据每个元素中的字数对这个数组进行排序。我试过了,但没有成功 我想要这个输出 数组['CAT'、'DOG CAT'、'CAT'] 我怎样才能做到这一点呢?这确实让人觉得很笨拙,但我现在想不出更简单的解决方案: with val (col) as ( values (ARRAY['CAT','CAT DOG CAT','DOG Cat']) ), word_list as ( select unn

有一个字符串数组

数组['CAT','CAT-DOG-CAT','DOG-CAT']

现在我想根据每个元素中的字数对这个数组进行排序。我试过了,但没有成功

我想要这个输出

数组['CAT'、'DOG CAT'、'CAT']


我怎样才能做到这一点呢?

这确实让人觉得很笨拙,但我现在想不出更简单的解决方案:

with val (col) as (
  values (ARRAY['CAT','CAT DOG CAT','DOG Cat'])
), word_list as (
  select unnest(col) as pc
  from val
), wc as (
  select array_length(string_to_array(pc, ' '),1) as word_count, pc
  from word_list
)
select array_agg(pc order by word_count desc)
from wc;

我想出了一个替代方案:

select array_agg(a) 
from (
  select unnest(array['CAT','CAT DOG CAT','DOG Cat']) as a 
  order by a) s

'Cat'
Cat在输出中来自何处。输入中没有这样的元素。