如何在Postgresql中将JSONB值转换为布尔值?
在Postgres中,将布尔字段从JSONB对象转换为普通布尔类型的最佳方法是什么 例如,我有一个JSON对象如何在Postgresql中将JSONB值转换为布尔值?,json,postgresql,Json,Postgresql,在Postgres中,将布尔字段从JSONB对象转换为普通布尔类型的最佳方法是什么 例如,我有一个JSON对象{“foo”:true},我可以在Postgresql中使用它。例如:select(“{foo:true}”::jsonb)这给了我一些JSONB类型的东西 现在我想将foo字段提取为布尔值。如果我这样做: select ('{"foo": true}'::jsonb)->'foo'; 我得到了JSONB类型的东西 但是,我不能将JSONB转换为布尔值。如果不是我这样做: sel
{“foo”:true}
,我可以在Postgresql中使用它。例如:select(“{foo:true}”::jsonb)代码>这给了我一些JSONB类型的东西
现在我想将foo
字段提取为布尔值。如果我这样做:
select ('{"foo": true}'::jsonb)->'foo';
我得到了JSONB类型的东西
但是,我不能将JSONB转换为布尔值。如果不是我这样做:
select ('{"foo": true}'::jsonb)->>'foo';
我会取回字符串类型的东西。从那我可以转换成布尔值。(例如:)
但从内部表示到字符串,再回到另一个内部表示,这似乎有点令人讨厌
有直接去学校的吗
我目前的另一个最佳解决方案似乎是:
select (('{"foo": true}'::jsonb)->'foo') = 'true'::jsonb;
但这似乎也有点错误。您可以使用:
我不确定这是否真的为您节省了任何内部类型转换,但这是我在9.4中知道的最接近的事情
select (('{"foo": true}'::jsonb)->'foo') = 'true'::jsonb;
select foo
from json_to_record('{"foo": true}') as x(foo bool);