以下功能的目的是返回一个随机字符串,长度为7个字符,其中包含字符a和|或b和|或c:
create or replace function random_short() returns text as $$
select array_to_string(
array (
select substring(
'abc'
from (random() * 3)::int for 1
)
from generate_series(1, 7)
),
''
)
$$ language sql;
问题在于,有时它返回的字符串短于7。我在函数中使用了各种整数的值(例如,将3更改为4),但无法弄清楚。有关如何解决此问题的想法?
答案 0 :(得分:0)
有时表达式带有随机返回0
。您可以改用以下表格:
select string_agg(substring('abc' from greatest((random() * 3)::int, 1) for 1), '')
from generate_series(1, 7)