6

これが問題です。MySQL の Connector/NET では、TINYINT(1)フィールドが .NET bool 値に適切に変換されます。列のあるテーブルから選択するとTINYINT(1)、すべてがゴールデンになります。ただし、次のような組み込みの MySQL v5.0 関数を使用する場合:

SELECT (3 BETWEEN 2 AND 4) AS oddly_not_boolean;

データベースからの実際の戻り値の型は、このフィールドをINTorとして登録します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 バグであることが明らかになりました。

4

0 に答える 0