【问题标题】:How do I convert a JSONB value to boolean in Postgresql?如何在 Postgresql 中将 JSONB 值转换为布尔值?
【发布时间】: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


    【解决方案1】:

    你可以使用json_to_record:

    select foo
    from json_to_record('{"foo": true}') as x(foo bool);
    

    我不确定这是否真的可以为您节省任何内部演员表,但这是我所知道的最接近 9.4 的内容

    【讨论】:

      猜你喜欢
      • 2015-09-29
      • 2018-03-07
      • 2020-12-10
      • 1970-01-01
      • 1970-01-01
      • 2016-01-13
      • 2016-10-07
      • 2016-05-14
      • 1970-01-01
      相关资源
      最近更新 更多