从 JSONB 对象中提取具有真值的键名
Extracting key names with true values from JSONB object
我正在尝试将 JSONB
中的 select 键键入 true
值。到目前为止,我设法使用此查询做到了这一点,但我觉得有更好的方法:
SELECT json.key
FROM jsonb_each_text('{"aaa": true, "bbb": false}'::JSONB) json
WHERE json.value = 'true';
我不喜欢的是我比较 strings
的 WHERE
子句。有没有办法将其转换为 boolean
?
如果是,它是否也适用于 truthy
和 falsy
值? (javascript 中 truthy
和 falsy
值的解释:http://www.codeproject.com/Articles/713894/Truthy-Vs-Falsy-Values-in-JavaScript)。
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
在后台使用相等运算符。
我正在尝试将 JSONB
中的 select 键键入 true
值。到目前为止,我设法使用此查询做到了这一点,但我觉得有更好的方法:
SELECT json.key
FROM jsonb_each_text('{"aaa": true, "bbb": false}'::JSONB) json
WHERE json.value = 'true';
我不喜欢的是我比较 strings
的 WHERE
子句。有没有办法将其转换为 boolean
?
如果是,它是否也适用于 truthy
和 falsy
值? (javascript 中 truthy
和 falsy
值的解释:http://www.codeproject.com/Articles/713894/Truthy-Vs-Falsy-Values-in-JavaScript)。
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
在后台使用相等运算符。