mysql:14841
From: mao <mao <mao@xxxxxxxxxx>>
Date: Tue, 12 May 2009 00:49:07 +0900
Subject: [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
-> 14841 2009-05-12 00:49 [mao <mao@xxxxxxxxxx>] UNSIGNEDの0からの引き算 14842 2009-05-12 08:21 ┣[高橋政利 <takahashi@] 14843 2009-05-12 09:41 ┣[Mikiya Okuno <Mikiya] 14844 2009-05-12 09:46 ┗[HIRATSUKA Sadao <hir] 14847 2009-05-12 21:27 ┗[mao <mao@xxxxxxxxxx>]