使用PostgreSQL 9.4,我将数据作为JSON数组存储在plpgsql代码中,例如:
j := '[1,2,3,4,5]'::json
接下来,我遍历这个数组并用数字做一些事情。
FOR i1 IN 0..(json_array_length(j)-1) LOOP
RAISE NOTICE 'i1=%', j->>(i1);
END LOOP;
我得到了这个输出:
1
2
3
4
5
如何获得循环的随机排序顺序?像:
3
5
1
2
4
答案 0 :(得分:2)
保持简单,只需使用json_array_elements_text
和ORDER BY random()
。
DECLARE
item text
BEGIN
FOR item IN
SELECT json_array_elements_text('[1,2,3,4,5]'::json) ORDER BY random()
LOOP
RAISE NOTICE 'item is %',item;
END LOOP;
END;
答案 1 :(得分:1)
SELECT INTO intarray array_agg(s.n)
FROM (SELECT generate_series(0,json_array_length(j)-1) AS n
ORDER BY random()) s
FOR i1 IN 0..(json_array_length(j)-1) LOOP
RAISE NOTICE 'i1=%', j->>(intarray[i1]);
END LOOP;
答案 2 :(得分:1)
使用generate_series():
select '[1,2,3,4,5]'::json->>(i)
from generate_series(0, 4) i
order by random();