mysql:14843
From: Mikiya Okuno <Mikiya Okuno <Mikiya.Okuno@xxxxxxxxxx>>
Date: Tue, 12 May 2009 09:41:40 +0900
Subject: [mysql 14843] Re: UNSIGNEDの0からの引き算
奥野です。 おはようございます。 mysql> SET sql_mode = NO_UNSIGNED_SUBTRACTION; をお試しあれ。 -- Mikiya Okuno, MySQL Support Engineer Sun Microsystems KK, Tokyo, Japan http://www-jp.mysql.com/ On 12/05/2009, at 12:49 AM, mao wrote: > こんばんは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>]