数字类型的示例 - 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]

将小数值插入到整数列中

以下示例将小数值插入到 INT 列中。

insert into film(language_id) values(1.5);

插入此值,但会将其四舍五入为整数值 2。

插入由于小数位数四舍五入而成功的小数

以下示例将具有更高精度的小数值插入列中。

insert into film(rental_rate) values(35.512);

在此示例中,值 35.51 将插入列中。

尝试插入超出范围的小数值

在此示例中,值 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 将转换为 2000000 以满足 REAL 列的精度要求。值 1999.99 将按原样加载。