Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Postgresql中将JSONB值转换为布尔值?_Json_Postgresql - Fatal编程技术网

如何在Postgresql中将JSONB值转换为布尔值?

如何在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

在Postgres中,将布尔字段从JSONB对象转换为普通布尔类型的最佳方法是什么

例如,我有一个JSON对象
{“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);