Postgresql 从JSONB对象中提取具有真值的键名
我正在尝试从Postgresql 从JSONB对象中提取具有真值的键名,postgresql,jsonb,Postgresql,Jsonb,我正在尝试从JSONB中选择键,并键入true值。到目前为止,我使用这个查询成功地做到了这一点,但我觉得有更好的方法: SELECT json.key FROM jsonb_each_text('{"aaa": true, "bbb": false}'::JSONB) json WHERE json.value = 'true'; 我不喜欢比较字符串的WHERE子句。是否有方法将其强制转换为布尔值? 如果是,它是否也适用于truthy和falsy值?(解释javascript
JSONB
中选择键,并键入true
值。到目前为止,我使用这个查询成功地做到了这一点,但我觉得有更好的方法:
SELECT json.key
FROM jsonb_each_text('{"aaa": true, "bbb": false}'::JSONB) json
WHERE json.value = 'true';
我不喜欢比较字符串的WHERE
子句。是否有方法将其强制转换为布尔值?如果是,它是否也适用于
truthy
和falsy
值?(解释javascript中的truthy
和falsy
值:)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'))
中的
使用引擎盖下的相等运算符。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
有一个相等运算符(=
;不同于json
),因此您可以从jsonb_each(…)json编写,其中json.value=jsonb'true'
(使用jsonb_each_text()
您依赖于一些json值的文本表示).jsonb
有一个相等运算符(=
;不同于json
),因此您可以从jsonb_each(…)json编写,其中json.value=jsonb'true'
(使用jsonb_each_text()
您依赖于一些json值的文本表示)。