【发布时间】:2015-03-26 22:33:54
【问题描述】:
在 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')::bool;
但是从内部表示到字符串,然后再回到另一个内部表示,这似乎有点棘手。
有没有直接去布尔的?
我目前最好的解决方法似乎是:
select (('{"foo": true}'::jsonb)->'foo') = 'true'::jsonb;
但这似乎也有点不对。
【问题讨论】:
标签: json postgresql