cast('18446744073709551614' as DECIMALV3(30, 2))
18446744073709552000
结果错误,是什么原因?
Doris 版本:5.7.99
补充问题背景:我们这里使用 doris 作为数仓,通过 flink cdc 将 mysql 数据同步到 doris, 在 mysql 中有一个表的字段是: task_id bigint(11) unsigned NOT NULL DEFAULT '0' COMMENT '订单ID',
在 flink 中 将 bigint unsigned 映射为 decimal(20,0) https://nightlies.apache.org/flink/flink-cdc-docs-release-3.0/docs/connectors/legacy-flink-cdc-sources/mysql-cdc/#data-type-mapping
在 doris 中 task_id 字段,为 decimal(20,0)
然后就出现了,精度丢失问题:
select cast ( 2405140526081293291 as decimal(20,0))
目前的解决方案
decimal(20,0) 更改为: largeint
-- 2405140526081293291
select cast ( 2405140526081293291 as LARGEINT)