这就是问题所在。在 MySQL 的 Connector/NET 中,TINYINT(1)
字段正确地来回转换为 .NET 布尔值。如果我从带有TINYINT(1)
列的表中进行选择,那么一切都是金色的。但是,当您使用内置的 MySQL v5.0 函数时,例如:
SELECT (3 BETWEEN 2 AND 4) AS oddly_not_boolean;
来自数据库的实际返回类型将此字段注册为INT
or 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 错误,仅在特定情况下显示。