SQL数学函数入门教程_SQLROUNDABS函数使用

ROUND用于四舍五入到指定小数位(正数保留小数、0取整、负数向高位进位),ABS返回数值绝对值;二者常组合用于数据清洗、误差计算与报表处理,需注意NULL传播及数据库实现差异。

SQL中的数学函数能帮你快速处理数值计算,ROUND、ABS是其中最常用也最基础的两个。掌握它们,对数据四舍五入、取绝对值、清洗异常负值等操作非常实用。

ROUND:四舍五入到指定小数位

ROUND函数用于对数值进行四舍五入,支持指定保留的小数位数(也可为负数,表示向整数高位进位)。

  • 基本语法:ROUND(数值, 小数位数)
  • 小数位数为正数:保留对应位小数,如 ROUND(3.14159, 2)3.14
  • 小数位数为0:四舍五入到个位,如 ROUND(27.8, 0)28
  • 小数位数为负数:向左进位,如 ROUND(1234.56, -2)1200(百位四舍五入)
  • 注意:不同数据库对ROUND的实现略有差异(如SQL Server和PostgreSQL严格四舍五入,MySQL在特定版本中可能受“银行家舍入”影响,但默认仍是标准四舍五入)

ABS:获取数值的绝对值

ABS函数返回一个数不带符号的值,即去掉负号,常用于消除负偏差、统一量纲或避免负数参与后续计算出错。

  • 基本语法:ABS(数值)
  • 无论输入是正数、负数还是零,都返回非负结果:ABS(-42)42ABS(0)0
  • 可嵌套使用,比如配合ROUND:ROUND(ABS(-3.789), 1) → 先取绝对值得3.789,再四舍五入得3.8
  • 常见用途:计算误差绝对值(如 ABS(actual - expected))、统计偏离程度、清洗含负折扣/负库存的脏数据

组合使用技巧与注意事项

ROUND和ABS经常一起用,尤其在报表、指标计算或ETL清洗阶段。

  • 安全处理可能为负的价格字段:ROUND(ABS(price), 2) 确保价格显示为正且保留两位小数
  • 计算平均偏差时避免负值干扰:AVG(ABS(score - baseline))
  • 慎用ROUND嵌套过深:如 ROUND(ROUND(x, 2), 1) 可能引入额外误差,建议一步到位
  • 空值(NULL)传入会直接返回NULL,必要时用COALESCE或CASE先处理

基本上就这些。ROUND和ABS看着简单,但在日常查询、视图定义和数据质量校验里高频出现。用熟了,写SQL会更稳更快。