固定小数点数型(DECIMAL, NUMERIC)

広告
eyecatch

MySQL で利用可能なデータ型の中で固定小数点数型(DECIMAL, NUMERIC)の使い方について解説します。

固定小数点数型のデータ型一覧

固定小数点数型は次の1つの種類が用意されています。

DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]

M は桁数の合計 (精度) で、D は小数点以下の桁数 (スケール) です。
最大桁数 (M) は 65 。デフォルトは 10。
小数部の最大桁数 (D) は 30 。デフォルトは 0。
別名:NUMERIC

DECIMAL 型は正確なデータを格納するので、金銭データなど正確な精度を保持することが重要な場合に適しています。

例えば DECIMAL(5, 2) とした場合、小数点以下が2桁、全体で5桁の数値を格納することができるので、格納できる値は、-999.99 から 999.99 の範囲になります。

例えば DECIMAL 型のカラムを持つテーブルを作成してみます。

create table numtest(num1 decimal(5, 2));

固定小数点数型のデータ型一覧(1)

範囲内の値であれば正常に格納することができます。

insert into numtest values(37.25);

固定小数点数型のデータ型一覧(2)

範囲を超える値を格納しようとするとエラーとなります。例えば DECIMAL(5, 2) 型のカラムに 24128.4 のような範囲外の値を格納しようとすると Out of range value for column 'カラム名' というエラーになります。

insert into numtest values(24128.4);

固定小数点数型のデータ型一覧(3)

符号なし(UNSIGNED)

DECIMAL 型は正の数と負の数を扱うことができますが、データ型の後に UNSIGNED を付けると 0 と正の数しか格納できなくなります。

DECIMAL UNSIGNED

例として DECIMAL UNSIGNED 型のカラムを持つテーブルを作成してみます。

create table numtest(num1 decimal(5, 2) unsigned);

符号なし(UNSIGNED)(1)

0 または 正の値の格納できる範囲は変わっていませんが、負の値は格納することができません。よって -10.12 のような負の値は格納しようとすると Out of range value for column 'カラム名' というエラーとなります。

insert into numtest values(-10.12);

符号なし(UNSIGNED)(2)

ZEROFILL

データ型に ZEROFILL をつけるとデータ型の桁数分 0 で埋められます。

DECIMAL ZEROFILL

※ ZEROFILL を付けると自動的に UNSIGNED が付きます

例として DECIMAL(10, 5) ZEROFILL 型のカラムを持つテーブルを作成してみます。

create table numtest(num1 decimal(10, 5) zerofill);

ZEROFILL(1)

データを追加した後でテーブルのデータを取得してみます。

insert into numtest values(16.725);

ZEROFILL(2)

桁数分だけ0で埋められて表示されます。

-- --

MySQL で利用可能なデータ型の中で固定小数点数型の使い方について解説しました。

MySQLの使い方の他の記事を見てみる

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)
Profile
profile_img

著者 / TATSUO IKURA

初心者~中級者の方を対象としたプログラミング方法や開発環境の構築の解説を行うサイトの運営を行っています。