【问题标题】:MySqlParameterCollection: How to add an explicit true/false value of a parameter for JSON boolean?MySqlParameterCollection:如何为 JSON 布尔值添加参数的显式真/假值?
【发布时间】:2018-08-30 06:18:10
【问题描述】:

我正在使用 MySqlParameterCollection 类构建一个 MySQL 命令,但我正在尝试查询从 json 列中提取的布尔字段。 也就是说,它是一个 JSON 布尔值。 如果我使用 MySqlParameterCollection 来添加它,即使我将类型指定为布尔值,最终运行的查询也如下所示:

从审核中选择 jdoc WHERE (JSON_EXTRACT(jdoc, '$.myFlag') = 0 )

这对于 mysql 布尔值很好,但该字段是 json 布尔值,并且只有在我运行此查询时才有效:

从审核中选择 jdoc WHERE (JSON_EXTRACT(jdoc, '$.myFlag') = false/true )

我的问题是,我可以以某种方式使用 MySqlParameterCollection 显式添加参数值(真/假),还是我必须自己将其烘焙到查询中? (不是世界末日,因为它是一组恒定的预定义值)。

谢谢, 罗伊。

【问题讨论】:

  • 我正在使用 MySql.Data 6.10.5

标签: c# mysql


【解决方案1】:

我终于找到了一个可以接受的答案: 虽然我无法从 MySQL.Data 中找到这样做的方法,但我能够从查询端解决这个问题: 您可以使用 CAST 函数将 JSON 布尔值转换为数值(这就是 MySQL 布尔值)。 因此,由于您控制了查询的创建,因此您可以使用 cast 函数以防您的参数为布尔值

例如:

SELECT jdoc 
FROM audits 
WHERE CAST(JSON_EXTRACT(jdoc, '$.myFlag') AS UNSIGNED) = 0;

请注意,您不能转换为任何 MySQL 类型,但数字 SIGNED/UNSIGNED 效果很好(请参阅 CAST 文档。)

【讨论】:

    猜你喜欢
    • 2020-01-05
    • 1970-01-01
    • 1970-01-01
    • 2015-04-01
    • 1970-01-01
    • 2013-06-05
    • 1970-01-01
    • 2012-11-16
    • 1970-01-01
    相关资源
    最近更新 更多