A5:SQL Mk-2

開発のこと、日々のこと

mysqlのunsigned decimalについて

ホーム フォーラム A5:SQL Mk-2掲示板 mysqlのunsigned decimalについて

  • このトピックには5件の返信、1人の参加者があり、最後にotoroにより2ヶ月前に更新されました。
6件の投稿を表示中 - 1 - 6件目 (全6件中)
  • 投稿者
    投稿
  • #9659 返信
    otoro
    ゲスト

    こんにちは。いつもお世話になっております。
    現状確認ができる環境がなくなってしまいましたので記憶頼りになってしまい申し訳ありませんが、decimal(17,7) unsignedなどで定義された列のデータを読み込んだ時に、本来は123.1234567である値の整数部が中途半端に失われて3.1234567などとして表示されてしまっているようです。
    現象が起きるのはunsignedの場合のみでsignedの場合は問題なさそうでした。
    もし再現が可能なようでしたらご対応いただけますと幸いです。
    またこちらでも再現可能な環境を触れるようになったらもう少し追記いたします。
    バージョン: A5:SQL Mk-2 64bit edition (Portable mode) Version 2.17.0 beta 9 ~ 10
    MySQL: 5.7.35-log MySQL Community Server (GPL)

    #9673 返信
    松原正和
    キーマスター

    otoro さんこんにちは。
     
    こちらでMySQL 5.7.31, 8.0.21で試しましたが、なかなか再現できません。何かもう少し情報をいただけると助かります。

    #9720 返信
    otoro
    ゲスト

    こんにちは。いつもお世話になっております。
    分かりにくくてすみませんでした。環境を触れるまでに時間がかかりそうですので、手元で桁数指定を変更しながらいくつか試した感じですと、整数部が失われる場合と小数部の最後が失われる場合とがあるようです。現象を再現できない場合もありました。
    ↓のSQLは一例です。Version 2.17.0 beta 14で再現できました。

    decimal(7,5) unsigned NOT NULL)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;

    A5M2の表示: 2.34567

    decimal(4,2) unsigned NOT NULL)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;

    A5M2の表示: 12.30

    #9721 返信
    otoro
    ゲスト

    すみません。おかしなことになってしまったのでそのまま張り付けてみます。

    — 整数部が失われる
    CREATE TABLE a(d decimal(7,5) unsigned NOT NULL)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
    INSERT INTO a(d)VALUES(12.34567);
    — A5M2の表示: 2.34567

    — 小数部が失われる
    CREATE TABLE a(d decimal(4,2) unsigned NOT NULL)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
    INSERT INTO a(d)VALUES(12.34);
    — A5M2の表示: 12.30

    #9736 返信
    松原正和
    キーマスター

    otoro さんこんにちは。
     
    再現できました。Version 2.17.0 beta 15 で修正してみましたのでご確認ください。(Version 2.16.2 にもバックポート予定です)

    #9744 返信
    otoro
    ゲスト

    こんにちは。いつもお世話になっております。
    2.17.0 beta 15にて修正されたのを確認しました。
    ご対応ありがとうございました。

6件の投稿を表示中 - 1 - 6件目 (全6件中)
返信先: mysqlのunsigned decimalについて
あなたの情報:




コメントは受け付けていません。