如何在一个字段中创建长度在两个数字之间并且在另一个字段中创建ID的字符串

时间:2019-01-29 15:15:03

标签: postgresql

我需要创建许多具有以下格式的字符串: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 

1 个答案:

答案 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