数据表字段更新:保留整数部分与小数点后4位
实现字段保留小数点前全量、后4位的更新方案
咱先明确两种常见需求方向:
- 直接截断小数点后第4位之后的数字(比如123.456789 → 123.4567)
- 对小数点后第4位进行四舍五入(比如123.456789 → 123.4568)
下面分主流数据库给你具体的更新语句:
MySQL/MariaDB
截断场景
用TRUNCATE()函数直接截断,语法简单粗暴:
UPDATE x SET your_field = TRUNCATE(your_field, 4);
四舍五入场景
用ROUND()函数实现四舍五入:
UPDATE x SET your_field = ROUND(your_field, 4);
PostgreSQL
PostgreSQL的函数和MySQL逻辑一致,直接套用就行:
截断场景
UPDATE x SET your_field = TRUNC(your_field, 4);
四舍五入场景
UPDATE x SET your_field = ROUND(your_field, 4);
SQL Server
SQL Server的ROUND()函数多了个参数控制截断/四舍五入,第三个参数传1就是截断:
截断场景
UPDATE x SET your_field = ROUND(your_field, 4, 1);
四舍五入场景
默认不传第三个参数就是四舍五入:
UPDATE x SET your_field = ROUND(your_field, 4);
特殊情况:字段是字符串类型
如果你的字段是VARCHAR这类字符串类型,得先转成数值类型再处理,最后转回字符串(以MySQL为例):
UPDATE x SET your_field = CAST(TRUNCATE(CAST(your_field AS DECIMAL), 4) AS CHAR);
⚠️ 小提醒:更新数据前最好先跑个查询验证结果,比如SELECT TRUNCATE(your_field,4) AS x_trim FROM x LIMIT 10;,确认符合预期再执行UPDATE,避免误操作哦!
内容的提问来源于stack exchange,提问作者MoxGoat




