postgresql - 在 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;
解决方案
问题是我没有正确构造返回值。
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;
推荐阅读
- python-asyncio - 为什么 StreamReader 无法在此代码中接收?
- angular - 错误类型错误:无法读取 Object.eval [as updateDirectives] 处未定义的属性“_id”
- go - Golang如何在Win10上缓存DNS?
- java - 观察者模式:事件触发后延迟动作
- javascript - AngularJS何时使用共享指令来隔离指令?
- javascript - 在 DOJO 中动态创建按钮
- .net - 在 VS2017 中搜索和替换包括后视的正则表达式不起作用
- python - IF ELSE中的python秒表
- arduino - Atmega 引导加载程序 - 无法两次上传草图
- python - 用于查看用户选择次数的同一网页的 Python 程序