Amazon Redshift中DECIMAL(5,4)仅保留两位小数问题求助
解决Amazon Redshift SQL Workbench/J中DECIMAL类型四位小数显示问题
第一步:先确认数据存储是否正确
别先纠结类型转换,先验证Redshift里实际存的是不是四位小数——执行这条SQL:
SELECT your_percent_col, CAST(your_percent_col AS VARCHAR(10)) FROM your_table LIMIT 10;
如果返回的字符串是0.1234这类四位小数,说明数据存储完全没问题,问题出在SQL Workbench/J的显示设置,和Redshift的类型定义、数据导入无关。
第二步:调整SQL Workbench/J的全局显示格式
这是最常见的原因,工具默认可能只显示两位小数:
- 打开顶部菜单的Edit → 选择Preferences
- 在左侧列表找到SQL Execution → 点击Data Display
- 找到Decimal format选项,把默认的
0.00改成0.0000(或者用#.####,效果一致) - 点Apply再OK,重新跑查询就能看到完整的四位小数了
第三步:临时查询时强制格式化输出
如果不想改全局设置,每次查询时可以用TO_CHAR函数强制指定输出格式:
SELECT TO_CHAR(your_percent_col, 'FM9.9999') AS formatted_percent FROM your_table;
FM前缀是用来去掉多余的前导空格,保证输出的格式紧凑干净。
额外提醒
- 别用FLOAT类型存百分比,浮点精度问题容易导致数据失真,你一开始定义的
DECIMAL(5,4)完全适配0.0000~1.0000的场景,不用换类型 - 要是CAST成VARCHAR后发现数据确实只有两位小数,那得检查COPY数据的命令有没有加错参数,但你说CSV格式没问题,这个可能性极低
内容的提问来源于stack exchange,提问作者Dermo920
相关产品推荐
相关产品推荐

