【问题标题】:Loop through JSON object to get value for given property name遍历 JSON 对象以获取给定属性名称的值
【发布时间】:2014-05-16 14:50:10
【问题描述】:

我有一些 JSON 对象,我需要为它们获取属性值。
我的情况是基于这个查询:

DO $$
DECLARE 
v_whatever character varying := 'a';
v_res character varying;
BEGIN
SELECT params->>v_whatever FROM user_info1 WHERE uid = 9 INTO v_res;
RAISE NOTICE 'v_res: %', v_res ;
END; $$

在表中,列参数(json 类型)的值为:{"a":"b","b":"c","c":"d"}, 查询返回v_res: b

因为我没有具体的属性名,所以代码如下:

DECLARE
v_temp char varying;
v_obj char varying[];
comp char varying[];
BEGIN
SELECT json_object_keys(params) FROM  user_info1 WHERE uid = p_uid into v_temp;
SELECT params->>v_temp FROM user_info1 WHERE uid = 9 INTO v_obj;

【问题讨论】:

  • 这是 node.js (javascript) 问题还是 postgresql? ....
  • 对不起,这是 postgresql 但 json 对象依赖于节点 ...

标签: json postgresql for-loop plpgsql


【解决方案1】:

一个基本的plpgsql FOR loop:

DO
$$
DECLARE 
   v_whatever text := 'a';
   v_res text;
BEGIN

FOR v_res IN
   SELECT params->>v_whatever
   FROM   user_info1
   WHERE  uid = 9
LOOP
   RAISE NOTICE 'v_res: %', v_res;
END LOOP;

END;
$$

请注意,基于集合的方法通常比循环更有效。看unnest()..

【讨论】:

  • NED LOOP 是什么意思? :D
  • @Daria: 是 Daria Espied 的废话 的缩写。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-24
  • 2014-08-09
  • 2017-09-04
  • 2016-05-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多