[前][次][番号順一覧][スレッド一覧]

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>]