首页 > 解决方案 > 在 postgres 中自动生成许多字母数字字符串并将它们作为数组添加到 JSONB 以插入

问题描述

我正在尝试在 postgres 中生成多个字母数字字符串,将它们添加到 JSONB 中的数组中,然后返回新的 JSONB 或开始将它们插入数据库。

我有一个基本设置,并希望至少在开始大规模创建之前查看创建了什么,但当前错误是invalid input syntax for type json.

CREATE OR REPLACE FUNCTION "StringGeneration" (
  "@length"              INTEGER
)
RETURNS VARCHAR(25) AS
$func$
DECLARE "i" INTERGER;
DECLARE "strings" VARCHAR(25);
BEGIN
    SELECT array_to_string(ARRAY(SELECT chr((96 + round(random() * 25)) :: integer) 
    FROM generate_series(1,10)), '') INTO "strings";
    RETURN "strings";
END;
$func$ LANGUAGE PLPGSQL;

如果我可以看到上面创建的内容,那么我想把它包装起来

DECLARE "i" INTERGER;
WHILE "i" < "@length" LOOP
    "i" = "i" + 1;
END LOOP;

标签: postgresqlgeneratorjsonb

解决方案


问题是我没有正确构造返回值。

CREATE OR REPLACE FUNCTION "PinGeneration" (
  "@length"              INTEGER
)
RETURNS VARCHAR(25) AS
$func$
DECLARE "pins" VARCHAR(25);
BEGIN
  SELECT array_to_string(
    ARRAY(
      SELECT CHR((96 + ROUND(RANDOM() * 25)):: INTEGER) 
      FROM generate_series(1, 10)
    ),
  '') INTO "pins";
    RETURN "pins";
END;
$func$ LANGUAGE PLPGSQL;

推荐阅读