【问题标题】:Extracting key names with true values from JSONB object从 JSONB 对象中提取具有真值的键名
【发布时间】:2016-04-27 12:35:39
【问题描述】:

我正在尝试从具有 true 值的 JSONB 类型中选择键。到目前为止,我设法使用此查询来做到这一点,但我觉得有更好的方法:

SELECT json.key
    FROM jsonb_each_text('{"aaa": true, "bbb": false}'::JSONB) json 
    WHERE json.value = 'true';

我不喜欢WHERE 子句,我在其中比较strings。有没有办法将其转换为boolean
如果是,它是否也适用于 truthyfalsy 值? (truthyfalsy 值在 javascript 中的解释:http://www.codeproject.com/Articles/713894/Truthy-Vs-Falsy-Values-in-JavaScript)。

【问题讨论】:

  • jsonb 有一个相等运算符(=;不像json),所以你可以写FROM jsonb_each(...) json WHERE json.value = jsonb 'true'jsonb_each_text() 你依赖于一些 JSON 值的文本表示)。

标签: postgresql jsonb


【解决方案1】:

jsonb 有一个相等运算符(=;不像json),所以你可以写

SELECT key
FROM   jsonb_each('{"aaa": true, "bbb": false}')
WHERE  value = jsonb 'true'

(使用 jsonb_each_text() 您依赖于一些 JSON 值的文本表示)。

如果需要,您甚至可以包含一些附加值:

WHERE  value IN (to_jsonb(TRUE), jsonb '"true"', to_jsonb('truthy'))

IN 在后台使用相等运算符。

【讨论】:

    猜你喜欢
    • 2017-06-23
    • 1970-01-01
    • 1970-01-01
    • 2020-08-12
    • 1970-01-01
    • 2020-12-13
    • 1970-01-01
    • 2022-07-02
    • 2018-06-23
    相关资源
    最近更新 更多