查询PostgreSQL 9.3中针对JSON列的数组包含

时间:2017-11-10 21:33:56

标签: json postgresql postgresql-9.3

我正在运行PostgreSQL 9.3。我有一个名为“模型”的列,类型为“json”(不是 jsonb)。 “模型”列的内容类似于以下内容:

{ "section": { "colors": ["red", "blue", "green"] } }

是否可以查询model -> section -> colors包含“蓝色”的行?

1 个答案:

答案 0 :(得分:1)

9.3中没有json比较运算符。您可以调用函数text并将函数的结果转换为Distinct on。如果json数组包含重复的元素,则使用select distinct on (id) t.* from my_table t, json_array_elements(model->'section'->'colors') where value::text = '"blue"';

const probabilitiesSlotMachine         = [{0 : 1000}, {1 : 100}, {2 : 50}, {3 : 30}, {4 : 20}, {5 : 10}, {6 : 5}, {7 : 4}, {8 : 2}, {9 : 1}]
var allSlotMachineResults              = []

probabilitiesSlotMachine.forEach(function(obj, index){
    for (var key in obj){
        for (var loop = 0; loop < obj[key]; loop ++){
            allSlotMachineResults.push(key)
        }
    }
});

SqlFiddle