Jan*_*neL 7 postgresql plpgsql json
我正在尝试在 Postgres 中创建一个函数,该函数可以遍历给定jsonb
对象中的每个键/值对。
create or replace function myFunction
(input jsonb)
returns jsonb as $$
BEGIN
// foreach(key in input)
// do some math operation on its corresponding value
returns input;
END; $$
Run Code Online (Sandbox Code Playgroud)
参数输入应为 jsonb 对象,例如{"a":1, "b":2, "c":3}
.
我想遍历对象中的每个键/值对。从我的评论中可以看出,我曾经使用更通用的编程语言(如 c、java 等)编写后端代码。所以我不擅长 SQL。我曾尝试在线搜索,但他们谈论如何遍历jsonb
数组而不是对象。所以真的卡在这里了。
使用jsonb_each(jsonb)
或jsonb_each_text(jsonb)
在FOR
循环中,例如:
CREATE OR REPLACE FUNCTION my_function(input jsonb)
RETURNS jsonb
LANGUAGE plpgsql AS -- language declaration required
$func$
DECLARE
_key text;
_value text;
BEGIN
FOR _key, _value IN
SELECT * FROM jsonb_each_text($1)
LOOP
-- do some math operation on its corresponding value
RAISE NOTICE '%: %', _key, _value;
END LOOP;
RETURN input;
END
$func$;
Run Code Online (Sandbox Code Playgroud)
称呼:
SELECT my_function('{"a":1, "b":2, "c":3}');
Run Code Online (Sandbox Code Playgroud)
有关的:
请注意,对于人们习惯于使用c、java 等编程语言而倾向于使用循环的许多问题,SQL 中提供了基于集合的高级解决方案。并排代码示例:
归档时间: |
|
查看次数: |
11065 次 |
最近记录: |