我需要创建许多具有以下格式的字符串:id | string
(每个新字符串的长度应在3到8个符号之间不同)
我这样写:
SELECT id, array_to_string(ARRAY(SELECT chr((97 + round(random() * 25)) :: integer) FROM generate_series(1, floor(random() * (8 - 3 + 1) + 3)::integer)), '') str FROM generate_series(1, 10) id;
但是每个字符串具有不同的id
和相同的string
我希望:
id str
1 sdfg
2 ghfdrr
3 ugh
但是我有:
id str
1 sdfg
2 sdfg
3 sdfg
答案 0 :(得分:0)
您可以尝试以下方法:
select id,array_to_string(array_agg(chr((97 + round(random() * 25)) :: integer)),'') str
from (
select id,generate_series(1,strlen) from (
select generate_series(1,10) id,floor(random() * (8 - 3 + 1) + 3)::integer strlen
) a
) b group by id order by id