我有一个表,其中有一个名为“data”的列,类型为JSONB。我试图提出一个SQL语句来适应最近的模型更改。 (postgres 9.4)
旧模型中的“isIndiaGSTComposition”需要在新模型中更改为“auxiliaryProperties”数据结构(下图)。 {
"test":{
"isIndiaGSTComposition":true (boolean)
}
}
新模式:
{
"test":{
"AuxiliaryProperties":[
{
"id":"indiaGSTComposition",
"booleanValue":true
}
]
}
}
请注意,如果isIndiaGSTComposition为null,则应为auxiliaryProperties:null。但如果它有真或假,则需要采用上述数据结构格式(如上面的“新模型”示例)。
感谢任何帮助。提前谢谢!
答案 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"
对其进行初始化
使用'{}'::jsonb
用jsonb_insert()
和"AuxiliaryProperties"
填充"id"
。
然后再次使用"booleanValue"
通过键jsonb_insert()
插入新的子对象,并使用"AuxiliaryProperties"
运算符删除旧的子对象。