代码之家  ›  专栏  ›  技术社区  ›  miensol

如何在MySql中使用布尔值创建JSON对象?

  •  3
  • miensol  · 技术社区  · 6 年前

    我希望我的MySql查询返回一个JSON对象,如下所示:

    {"name": "Piotr", "likesMysql": true}
    

    当我这样做时,这似乎工作得很好:

    SELECT json_object(
        'name', 'Piotr',
        'likesMysql', TRUE
    )
    

    然而,当我试图推导 likesMysql 来自 if 我得到的表情 0 1 而不是 false true 例如。:

    SELECT json_object(
        'name', 'Piotr',
        'likesMysql', if(4 MOD 2 = 0, TRUE, FALSE)
    )
    

    结果在

    {"name": "Piotr", "likesMysql": 1}
    

    如何使用 json_object 构造一个JSON对象 真的 错误 作为属性值?

    4 回复  |  直到 6 年前
        1
  •  13
  •   miensol    6 年前

    这似乎是 a bug in MySql .

    不过,您可以使用 cast(true as json) 例如。:

    SELECT json_object(
        'name', 'Piotr',
        'likesMysql', if(4 MOD 2 = 0, cast(TRUE as json), cast(FALSE as json))
    )
    
        2
  •  3
  •   Aniket Bhansali    6 年前

    只需执行以下操作,

    SELECT json_object( 'name', 'Piotr', 'likesMysql', if(5 MOD 2 = 0, TRUE, FALSE) is true )

    希望您通过以下操作获得期望的结果:)

        3
  •  1
  •   EricW    4 年前

    Aniket Bhansali的方法可以简化为:

    select json_object(
        'bool_true', (4 mod 2 = 0) is true,
        'bool_false', 0 is true) b;
    

    它返回

    {"bool_true": true, "bool_false": false}
    

    在mysql 8上测试。

        4
  •  1
  •   sultonaka    4 年前
    SELECT json_object(
       'name', 'Piotr',
       'likesMysql', 4 MOD 2 != 0
    )