Вот минимальный пример некоторого странного поведения, которое я наблюдаю с 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
, т. Е. Обрезается перед преобразованием, а не преобразованием, а затем округляется. Это ожидаемое поведение? Почему они разные?