数値型を使用する例 - Amazon Redshift

数値型を使用する例

CREATE TABLE ステートメント

次の CREATE TABLE ステートメントでは、さまざまな数値データ型を実際に宣言しています。

create table film ( film_id integer, language_id smallint, original_language_id smallint, rental_duration smallint default 3, rental_rate numeric(4,2) default 4.99, length smallint, replacement_cost real default 25.00);

範囲外の整数を挿入する試み

次の例では、値 33000 を SMALLINT 列に挿入しようとしています。

insert into film(language_id) values(33000);

SMALLINT の範囲は、-32768~+32767 であるため、Amazon Redshift はエラーを返します。

An error occurred when executing the SQL command: insert into film(language_id) values(33000) ERROR: smallint out of range [SQL State=22003]

整数列への 10 進値の挿入

次の例では、10 進値を INT 列に挿入します。

insert into film(language_id) values(1.5);

この値は挿入されますが、整数値 2 に切り上げられます。

10 進値のスケールが丸められるため挿入に成功する場合

次の例では、列よりも上位の精度を持つ 10 進値を挿入します。

insert into film(rental_rate) values(35.512);

この例では、値 35.51 が列に挿入されます。

範囲外の 10 進値を挿入する試み

この場合、値 350.10 は範囲外です。DECIMAL 列内の値の桁数は、列の精度からそのスケールを引いた結果となります (RENTAL_RATE 列の場合は 4 から 2 を引いた結果)。すなわち、DECIMAL(4,2) 列の許容範囲は、-99.9999.99 です。

insert into film(rental_rate) values (350.10); ERROR: numeric field overflow DETAIL: The absolute value is greater than or equal to 10^2 for field with precision 4, scale 2.

REAL 列への可変精度値の挿入

次の例では可変精度値を REAL 列に挿入します。

insert into film(replacement_cost) values(1999999.99); insert into film(replacement_cost) values(1999.99); select replacement_cost from film; +------------------+ | replacement_cost | +------------------+ | 2000000 | | 1999.99 | +------------------+

1999999.99 は、REAL 列の精度要件を満たすために 2000000 に変換されます。値 1999.99 はそのままロードされます。