CREATE TABLE public.tbl_test
(
pk_test_id BIGSERIAL PRIMARY KEY,
dbl_amount DOUBLE PRECISION,
dbl_usd_amount DOUBLE PRECISION
);
程式:
CREATE OR REPLACE PROCEDURE public.sp_insert_or_update_test(IN jsnData jsonb)
LANGUAGE plpgsql
AS $BODY$
DECLARE
BEGIN
INSERT INTO public.tbl_test (
dbl_amount,
dbl_usd_amount)
VALUES(
CAST(jsnData->>'dbl_amount' AS DOUBLE PRECISION[]) ->> 0,
CAST(jsnData->>'dbl_amount' AS DOUBLE PRECISION[]) ->> 1
);
RETURN;
END;
$BODY$;
用法:
CALL sp_insert_or_update_test('{ "dbl_amount": [1, 2] }'::jsonb);
問題:
在INSERT宣告中,我嘗試使用陣列索引從陣列中插入 2 個值。但它不起作用。
CAST(jsnData->>'dbl_amount' AS DOUBLE PRECISION[]) ->> 0
期待一個解決方案(Fn/Operator)在 postgresql 程序中的 INSERT 陳述句中從帶有索引的陣列中獲取值。
uj5u.com熱心網友回復:
您需要將dbl_amount密鑰提取為 JSONB,而不是文本,因此第一個運算子應該是->. 然后您需要轉換最終->>運算子的結果,而不是中間 JSONB 值。結果應該double precision不是一個陣列double precision
CAST( (jsnData -> 'dbl_amount' ->> 0) AS DOUBLE PRECISION),
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/530318.html
