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

How to create a JSON object in MySql with a boolean value?

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

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

当我这样做时,这似乎工作正常:

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

然而,当我尝试从 if 表达式中导出 likesMysql 时,我得到 01 而不是 falsetrue 例如:

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

结果

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

如何使用 json_object 构造一个 JSON 对象,该对象具有 truefalse 作为 属性 值?

跟着下面就行,

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

希望你能得到想要的结果:)

这好像是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))
)

Aniket Bhansali 的方法可以简化为:

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

哪个returns

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

测试于 mysql 8.

SELECT json_object(
   'name', 'Piotr',
   'likesMysql', 4 MOD 2 != 0
)