2009年5月12日

[mysql 14841] UNSIGNEDの0からの引き算

こんばんはMAOです。
すみません。お教えください。

mysql 3.xx.xxで動いていたプログラムを
mysql 5.0.45に移植中です。

mysql 3のときですが、
INT UNSIGNEDで0が入っているフィールドから引き算をしても

0は0のままで0以下になることはなかったのですが、
mysql 5でやった場合は、0から1を引くと4294967295になってしまいます。
これを0にする方法はありませんでしょうか?
0かどうか確認をして、0だったら、引かないという方法は考えられますが、
フィールド数が多く、プログラムでなく、SQL側で対応できればと考えています。

以上、よろしくお願いいたします。


------ test sql start -------
CREATE TABLE `mtest` (
`fnum` INT UNSIGNED NOT NULL
) TYPE = MYISAM ;

INSERT INTO `mtest` ( `fnum` )
VALUES (
'0'
);
update mtest set fnum = fnum -1;

select fnum from mtest;
------ test sql end -------

■結果
mysql 3.xの場合は 0
mysql 5.xの場合は 4294967295


投稿者 xml-rpc : 2009年5月12日 00:49
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/84973
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。