6

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

SELECT (3 BETWEEN 2 AND 4) AS oddly_not_boolean;

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

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

CREATE FUNCTION `to_bool`(var_num BIGINT)
    RETURNS TINYINT(1) RETURN var_num;

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

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

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

4

0 回答 0