在PostgreSQL中查询JSON []类型

时间:2018-06-21 08:48:09

标签: arrays json postgresql

我在postgres中有一个表,其中包含一个具有json[]数据类型的字段。 此列中存储数据的结构如下:

[{
    "sym": "BTC",
    "enn": "Bitcoin",
    "fan": "",
    "prc": 7284.46,
    "c24": -4.33,
    "mkc": 124460367747.02,
    "mkp": 0
}, {
    "sym": "ETH",
    "enn": "Ethereum",
    "fan": "",
    "prc": 571.735,
    "c24": -5.23,
    "mkc": 57166582578.235,
    "mkp": 0
}, {
    "sym": "XRP",
    "enn": "Ripple",
    "fan": "",
    "prc": 0.625291,
    "c24": -6.28,
    "mkc": 24539115471.842476,
    "mkp": 0
}, {
    "sym": "BCH",
    "enn": "Bitcoin Cash",
    "fan": "",
    "prc": 1034.65,
    "c24": -7.09,
    "mkc": 17771148400,
    "mkp": 0
}, {
    "sym": "EOS",
    "enn": "EOS",
    "fan": "",
    "prc": 13.2186,
    "c24": -7.95,
    "mkc": 11845841674.9512,
    "mkp": 0
}]

我需要的是使用特定的"sym"键来获取json。像这样:

{
    "sym": "BTC",
    "enn": "Bitcoin",
    "fan": "",
    "prc": 7284.46,
    "c24": -4.33,
    "mkc": 124460367747.02,
    "mkp": 0
}

我尝试过:

select to_json(data)::json ->'sym'->'BTC'from my_table;

但是它不起作用。我知道它不起作用,因为我的字段是一个数组,而不是json并尝试了

select json_array_elements(to_json(data)::json->'sym'->'BTC') from my_table;

,但是它也不起作用。 有帮助吗?

1 个答案:

答案 0 :(得分:0)

您是否尝试过使用CTE?当然,还有其他许多方法可以做到这一点,但是我发现CTE非常优雅且易于阅读。

convertTimestamp('1395660658')