【发布时间】:2020-04-30 22:01:19
【问题描述】:
这是我必须创建一串 DNA 的代码:
prepare dna_length(int) as
with t1 as (
select chr(65) as s
union select chr(67)
union select chr(71)
union select chr(84) )
, t2 as ( select s, row_number() over() as rn from t1)
, t3 as ( select generate_series(1,$1) as i, round(random() * 4 + 0.5) as rn )
, t4 as ( select t2.s from t2 join t3 on (t2.rn=t3.rn))
select array_to_string(array(select s from t4),'') as dna;
execute dna_length(20);
我试图弄清楚如何重写它以给出一个包含 5 行 DNA 字符串的表,每行长度为 20,而不仅仅是一行。这是针对 PostgreSQL 的。
我试过了:
CREATE TABLE dna_table(g int, dna text);
INSERT INTO dna_table (1, execute dna_length(20));
但这似乎不起作用。我是一个绝对的初学者。如何正确执行此操作?
【问题讨论】:
标签: sql postgresql random prepared-statement set-returning-functions