开发者

How do I convert a MySQL function result to tinyint(1)

Here's the problem. In MySQL's Connector/NET a TINYINT(1) field properly translates back and forth into a .NET bool value. If I select from a table with a TINYINT(1) column, everything is golden. However, when you use built-in MySQL v5.0 functions like:

SELECT (3 BETWEEN 2 AND 4) AS oddly_not_boolean;

The actual return type from the database registers this field as INT or BIGINT, which Connector/.NET obviously doesn't convert to bool. MySQL CAST() and CONVERT() do not allow casting to TINYINT(1).

I've even gone so far as to try a user function to do this, but this doesn't work either (EDIT: this does work):

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

How do I convert an INT to a TINYINT(1) in a query in MySQL?

EDIT: The above function DOES actually work to convert the value to a TINYINT(1), but my Connector/NET is just bugged and doesn't properly convert the values from functions.

UPDATE 2009-开发者_运维技巧11-03: Updated my connector and it's still giving me back Int32. Further testing reveals that this is an InnoDB bug in MySQL 5.0.x that only shows under specific circumstances.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜