2009年5月12日

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

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




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