Postgresql - 用于更新JSONB列类型的SQL

时间:2017-11-20 15:28:57

标签: json postgresql postgresql-9.4 jsonb

我有一个表,其中有一个名为“data”的列,类型为JSONB。我试图提出一个SQL语句来适应最近的模型更改。 (postgres 9.4)

旧模型中的“isIndiaGSTComposition”需要在新模型中更改为“auxiliaryProperties”数据结构(下图)。

 {  
   "test":{  
      "isIndiaGSTComposition":true        (boolean)
   }
}

新模式:

{  
   "test":{  
      "AuxiliaryProperties":[
                   {
                    "id":"indiaGSTComposition",
                    "booleanValue":true
                    }
                  ]        
   }
}

请注意,如果isIndiaGSTComposition为null,则应为auxiliaryProperties:null。但如果它有真或假,则需要采用上述数据结构格式(如上面的“新模型”示例)。

感谢任何帮助。提前谢谢!

1 个答案:

答案 0 :(得分:0)

您可以编写转换功能并使用

$('select#myid')[0].onchange = function() { alert(555); }

所有JSON操作均为here(选择PostgreSQL版本)。

使用UPDATE table SET field = conv_func(field); 运算符获取“测试”的子对象:

json->'test'

如果您有多个字段,则可以使用

对其进行迭代
{  
      "isIndiaGSTComposition":true        (boolean)
}

为新的FOR _rec IN SELECT t."key", t."value" FROM jsonb_each(subobject) t LOOP ... END LOOP; 子对象声明新的JSONB变量,并使用"AuxiliaryProperties"对其进行初始化

使用'{}'::jsonbjsonb_insert()"AuxiliaryProperties"填充"id"

然后再次使用"booleanValue"通过键jsonb_insert()插入新的子对象,并使用"AuxiliaryProperties"运算符删除旧的子对象。