ホーム › フォーラム › A5:SQL Mk-2掲示板 › mysqlのunsigned decimalについて
- このトピックには5件の返信、1人の参加者があり、最後にotoroにより3年、 1ヶ月前に更新されました。
-
投稿者投稿
-
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)松原正和キーマスターotoro さんこんにちは。
こちらでMySQL 5.7.31, 8.0.21で試しましたが、なかなか再現できません。何かもう少し情報をいただけると助かります。otoroゲストこんにちは。いつもお世話になっております。
分かりにくくてすみませんでした。環境を触れるまでに時間がかかりそうですので、手元で桁数指定を変更しながらいくつか試した感じですと、整数部が失われる場合と小数部の最後が失われる場合とがあるようです。現象を再現できない場合もありました。
↓のSQLは一例です。Version 2.17.0 beta 14で再現できました。12-- 整数部が失われる<code>CREATE TABLE</code>a<code>(</code>ddecimal(7,5) unsigned NOT NULL)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
12INSERT INTO a(d)VALUES(12.34567);A5M2の表示: 2.34567
12-- 小数部が失われる<code>CREATE TABLE</code>a<code>(</code>ddecimal(4,2) unsigned NOT NULL)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
12INSERT INTO a(d)VALUES(12.34);A5M2の表示: 12.30
otoroゲストすみません。おかしなことになってしまったのでそのまま張り付けてみます。
— 整数部が失われる
CREATE TABLEa
(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 TABLEa
(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松原正和キーマスターotoro さんこんにちは。
再現できました。Version 2.17.0 beta 15 で修正してみましたのでご確認ください。(Version 2.16.2 にもバックポート予定です)otoroゲストこんにちは。いつもお世話になっております。
2.17.0 beta 15にて修正されたのを確認しました。
ご対応ありがとうございました。 -
投稿者投稿