Вот проблема. В 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)
.
Я даже зашел так далеко, что попробовал пользовательскую функцию для этого, , но это тоже не работает (РЕДАКТИРОВАТЬ: работает ):
CREATE FUNCTION `to_bool`(var_num BIGINT)
RETURNS TINYINT(1) RETURN var_num;
Как преобразовать INT
в TINYINT(1)
в запросе в MySQL?
РЕДАКТИРОВАТЬ: вышеупомянутая функция действительно работает для преобразования значения в TINYINT(1)
, но мой Connector / NET просто прослушивается и не может правильно преобразовать значения из функций.
ОБНОВЛЕНИЕ 2009-11-03: обновил мой разъем, и он все еще возвращает мне Int32. Дальнейшее тестирование показывает, что это ошибка InnoDB в MySQL 5.0.x, которая отображается только при определенных обстоятельствах.