SQL中如何将Decimal类型按规则格式化为7位定长整数
SQL 按规则格式化Decimal类型实现方案
注意:你要求的输出带前导零,原生Integer数值类型无法保留前导零,因此最终输出为定长字符串类型。
核心转换逻辑
- 提取Decimal的整数部分,舍弃小数位
- 整数部分末尾补与原小数位数等量的0(示例中小数为2位,等价于整数部分乘以100)
- 将计算结果格式化为7位定长字符串,长度不足时左侧补前导零
如果你的Decimal字段小数位数不是2位,将乘以的100替换为对应10的小数位数次方即可,比如3位小数就乘以1000。
各主流数据库实现代码
测试用输入均为999.11,输出均为0099900,符合要求。
MySQL
-- input_decimal 为你的Decimal字段,your_table 为对应表名 SELECT LPAD(FLOOR(input_decimal) * 100, 7, '0') AS format_result FROM your_table;
Oracle
-- input_decimal 为你的Decimal字段,your_table 为对应表名 SELECT LPAD(TRUNC(input_decimal) * 100, 7, '0') AS format_result FROM your_table;
PostgreSQL
-- input_decimal 为你的Decimal字段,your_table 为对应表名 SELECT LPAD((FLOOR(input_decimal) * 100)::TEXT, 7, '0') AS format_result FROM your_table;
SQL Server
-- input_decimal 为你的Decimal字段,your_table 为对应表名 SELECT RIGHT('0000000' + CAST(FLOOR(input_decimal) * 100 AS VARCHAR(7)), 7) AS format_result FROM your_table;
内容的提问来源于stack exchange,提问作者A Coder
相关产品推荐
相关产品推荐

