这是问题所在。在MySQL的Connector / NET中,TINYINT(1)
字段正确地来回转换为.NET bool值。如果我从具有TINYINT(1)
列的表格中进行选择,那么一切都是黄金的。但是,当您使用内置的MySQL v5.0函数时:
SELECT (3 BETWEEN 2 AND 4) AS oddly_not_boolean;
数据库中的实际返回类型将此字段注册为INT
或BIGINT
,其中Connector / .NET显然不会转换为bool。 MySQL CAST()
和CONVERT()
不允许转换为TINYINT(1)
。
我甚至尝试用户函数来执行此操作,但这不起作用(编辑:此执行工作):< / p>
CREATE FUNCTION `to_bool`(var_num BIGINT)
RETURNS TINYINT(1) RETURN var_num;
如何在MySQL中的查询中将INT
转换为TINYINT(1)
?
编辑:上面的函数实际上是将值转换为TINYINT(1)
,但是我的Connector / NET只是被错误修改,并没有正确转换函数中的值。
更新2009-11-03:更新了我的连接器,它仍然让我回到Int32。进一步测试表明,这是MySQL 5.0.x中的InnoDB bug,仅在特定情况下显示。