如何将 MySQL 函数结果转换为 tinyint(1)

Kas*_*man 6 mysql asp.net boolean tinyint

这就是问题所在。在 MySQL 的 Connector/NET 中,TINYINT(1)字段正确地来回转换为 .NET bool 值。如果我从带有一TINYINT(1)列的表中进行选择,则一切都是金色的。但是,当您使用内置 MySQL v5.0 函数时,例如:

SELECT (3 BETWEEN 2 AND 4) AS oddly_not_boolean;
Run Code Online (Sandbox Code Playgroud)

数据库的实际返回类型将此字段注册为INTor BIGINT,Connector/.NET 显然不会将其转换为 bool。MySQLCAST()并且CONVERT()不允许强制转换为TINYINT(1).

我什至尝试使用用户功能来做到这一点, 但这也不起作用(编辑:这确实有效):

CREATE FUNCTION `to_bool`(var_num BIGINT)
    RETURNS TINYINT(1) RETURN var_num;
Run Code Online (Sandbox Code Playgroud)

如何在 MySQL 中的查询中将an 转换INT为 a TINYINT(1)?

编辑:上面的函数确实可以将值转换为 a TINYINT(1),但我的连接器/NET 只是被窃听,无法正确转换函数中的值。

2009 年 11 月 3 日更新:更新了我的连接器,它仍然返回 Int32。进一步测试表明,这是MySQL 5.0.x 中的InnoDB 错误,仅在特定情况下才会显示。