【发布时间】:2021-05-14 01:06:12
【问题描述】:
我创建了一个 json 变量 VDN 就像这样
{"80001": ["6", "9"], "80002": ["2", "6", "10"], "80004": ["4", "10", "8"]}
我创建了一个表,其中键和值在两个不同的列中分隔为 Varchar。
drop function if exists aa_Dev.VDN();
CREATE OR REPLACE FUNCTION aa_dev.VDN()
RETURNS VOID AS
$$
begin
DROP TABLE IF EXISTS aa_dev.sdg_vdn;
CREATE TABLE IF NOT EXISTS aa_dev.sdg_vdn (
VDN VARCHAR,
skills VARCHAR
);
INSERT INTO aa_dev.sdg_vdn(VDN, skills)
select t.*
from aa_dev.sdg_metadata m
cross join json_each_text(m.VDN) as t(VDN, "values");
end
$$
LANGUAGE plpgsql;
所以我想要的数据类型应该是现在而不是 varchar
CREATE TABLE IF NOT EXISTS aa_dev.sdg_vdn (
VDN INT,
skills INT[]
);
如何在 PostgreSQL 中做到这一点?我曾尝试使用 json_populate_record 而不是 json_each_text,因为它可以返回任何数据类型,但这也不起作用。
【问题讨论】:
-
不相关,但是:每次调用函数时创建一个新表并不是一个好主意。
标签: sql json postgresql plpgsql