これが問題です。MySQL の Connector/NET では、TINYINT(1)
フィールドが .NET bool 値に適切に変換されます。列のあるテーブルから選択するとTINYINT(1)
、すべてがゴールデンになります。ただし、次のような組み込みの MySQL v5.0 関数を使用する場合:
SELECT (3 BETWEEN 2 AND 4) AS oddly_not_boolean;
データベースからの実際の戻り値の型は、このフィールドをINT
orとして登録しますBIGINT
が、Connector/.NET は明らかに bool に変換しません。へのキャストを許可CAST()
しCONVERT()
ませんTINYINT(1)
。
これを行うためにユーザー関数を試すことさえしましたが、しかし、これもうまくいきません(編集:これは機能します):
CREATE FUNCTION `to_bool`(var_num BIGINT)
RETURNS TINYINT(1) RETURN var_num;
MySQL のクエリで aINT
を aに変換するにはどうすればよいですか?TINYINT(1)
編集: 上記の関数は実際には値を に変換するために機能しますTINYINT(1)
が、私の Connector/NET にはバグがあり、関数から値を適切に変換しません。
UPDATE 2009-11-03: コネクタを更新しましたが、それでも Int32 が返されます。さらにテストを行った結果、これは特定の状況でのみ発生する MySQL 5.0.xのInnoDB バグであることが明らかになりました。