【问题标题】:PostgreQL fetch data from Json field which of type multidimensional arrayPostgresQL 从多维数组类型的 Json 字段中获取数据
【发布时间】:2019-03-28 09:16:04
【问题描述】:

我正在寻找从 json 类型的列的表中获取数据的查询。

我的桌子是这样的:

`ID | ParentID |        Details`

`-------------------------------------------------------------------------------------------`

`1  |  10      | {"_translated": {"en_US": {"is_draft": "false"}, "default_locale": "en"}}`

`2  |  20      | {"_translated": {"en_US": {"is_draft": "true"}, "default_locale": "en"}}`

`3  |  30      | {"_translated": {"en_CA": {"is_draft": "true"}, "default_locale": "en"}}`

`4  |  40      | {"_translated": {"en_CA": {"is_draft": "false"}, "default_locale": "en"}}`

我想获取 is_draft = false 的那些行。

请有人帮我查询一下。

【问题讨论】:

    标签: php sql json postgresql


    【解决方案1】:

    试试:

    SELECT 
       id,
       parent_id, 
       details
    FROM books
    WHERE details->'_translated' -> 'en_US' -> 'is_draft' ='false' 
    OR details->'_translated' -> 'en_CA' -> 'is_draft' ='false' ;
    

    【讨论】:

      【解决方案2】:

      鉴于我们甚至不知道哪些键会将 is_draft 设置为 false 的子 JSON 对象,这里的一种选择是将 JSON 转换为文本并使用 LIKE 搜索它:

      SELECT *
      FROM yourTable
      WHERE Details::text LIKE '%"is_draft": "false"%';
      

      Demo

      【讨论】:

        猜你喜欢
        • 2019-04-02
        • 2016-02-13
        • 1970-01-01
        • 2014-09-20
        • 2018-11-21
        • 1970-01-01
        • 2021-10-07
        • 2023-02-23
        • 1970-01-01
        相关资源
        最近更新 更多