メニュー
Amazon Redshift
データベース開発者ガイド (API Version 2012-12-01)

数値型を使用する例

CREATE TABLE ステートメント

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

Copy
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 列に挿入しようとしています。

Copy
insert into film(language_id) values(33000);

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

Copy
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 列に挿入します。

Copy
insert into film(language_id) values(1.5);
この値は挿入されますが、整数値 2 に切り上げられます。

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

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

Copy
insert into film(rental_rate) values(35.512);
この例では、値 35.51 が列に挿入されます。

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

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

Copy
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 列に挿入します。

Copy
insert into film(replacement_cost) values(1999.99); insert into film(replacement_cost) values(19999.99); select replacement_cost from film; replacement_cost ------------------ 20000 1999.99 ...
19999.99 は、列の 6 桁の精度要件を満たすために 20000 に変換されます。値 1999.99 はそのままロードされます。