# 数値を異なる数値型の列に記録する

大きな記憶領域を占める浮動小数点型の値を、小さな記憶領域の場所に代入するとき、その値が小さな記憶領域の場所に記録できない値であればエラーとなります。 次に例を示します。

    create table mytable (r REAL, d DOUBLE PRECISION);
    0 rows inserted/updated/deleted
    INSERT INTO mytable (r, d) values (3.4028236E38, 3.4028235E38);
    ERROR X0X41: The number '3.4028236E38' is outside the range for
    the data type REAL.

浮動小数点型の値を、INTEGERの列に記録できます。小数点以下の部分は切り捨てられます。次に例を示します。

    INSERT INTO mytable(integer_column) values (1.09e0);
    1 row inserted/updated/deleted
    SELECT integer_column
    FROM mytable;
    I
    ---------------
    1

整数型には、その範囲内で小数のある数値を置くことができますが、精度は失われます。

小数のある数値型には、その精度の範囲内にある整数を置くことができます。例を挙げます。

    ij> insert into mytable (decimal_column)
    VALUES (55555555556666666666);
    ERROR X0Y21: The number '55555555556666666666' is outside the
    range of the target DECIMAL/NUMERIC(5,2) datatype.

大きな記憶領域を占める整数の値を、小さな記憶領域に代入するとき、その値が小さな記憶領域では記録できないとき、エラーとなります。以下に例を挙げます。

    INSERT INTO mytable (int_column) values 2147483648;
    ERROR 22003: The resulting value is outside the range for the
    data type INTEGER.

注: NUMERICの値から小数以下を取り除く場合、Derbyは切捨てを行います。
親トピック: 数値型
関連概念
数値型の概要
関連資料
式にて行われる数値型の項目
小数を計算するときの目盛り