Как преобразовать результат функции MySQL в tinyint (1) - PullRequest
3 голосов
/ 19 ноября 2009

Вот проблема. В 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, которая отображается только при определенных обстоятельствах.

...