这是我在Amazon Redshift上看到的一些奇怪行为的最小示例。这两个查询
select 0.010691::DECIMAL(20,4);
select ('0.010691'::varchar(255))::DECIMAL(20,4);
返回0.0107
,这是我期望的。但是
create table test (
"val" varchar(255)
);
insert into test values ('0.010691');
select val::DECIMAL(20, 4) from test;
返回0.0106
,即它在转换而不是转换然后舍入之前被截断。这是预期的行为吗?为什么这些不同?