SQL ROUND() 函数
ROUND()
是 SQL 中的一个函数,用于将数值四舍五入到指定的小数位数。这个函数常用于数字计算中,以便对数据进行精确控制。
1. ROUND()
的基本语法
ROUND(number, decimal_places);
number
:要进行四舍五入的数值。decimal_places
:要保留的小数位数。如果省略该参数,默认将四舍五入为整数。
2. ROUND()
的示例
假设你有一个名为 sales
的表,包含以下数据:
sale_id | sale_amount |
---|---|
1 | 123.456 |
2 | 78.912 |
3 | 54.789 |
2.1 四舍五入到两位小数
如果你希望将 sale_amount
列中的数字四舍五入到两位小数,可以使用以下 SQL 查询:
SELECT sale_id, ROUND(sale_amount, 2) AS rounded_amount
FROM sales;
查询结果:
sale_id | rounded_amount |
---|---|
1 | 123.46 |
2 | 78.91 |
3 | 54.79 |
在这个例子中,ROUND(sale_amount, 2)
将每个 sale_amount
的数值四舍五入到两位小数。
2.2 四舍五入到整数
如果你只想保留整数部分,可以省略 decimal_places
参数:
SELECT sale_id, ROUND(sale_amount) AS rounded_amount
FROM sales;
查询结果:
sale_id | rounded_amount |
---|---|
1 | 123 |
2 | 79 |
3 | 55 |
这里,ROUND(sale_amount)
将 sale_amount
的数值四舍五入到整数。
2.3 四舍五入到负数的小数位
你还可以将 decimal_places
设置为负数,来四舍五入到整数的某个位置。例如,四舍五入到最接近的 10:
SELECT sale_id, ROUND(sale_amount, -1) AS rounded_amount
FROM sales;
查询结果:
sale_id | rounded_amount |
---|---|
1 | 120 |
2 | 80 |
3 | 50 |
在这个例子中,ROUND(sale_amount, -1)
将每个 sale_amount
四舍五入到最接近的 10。
3. ROUND()
函数的常见问题及解决方案
3.1 四舍五入的边界情况
ROUND()
函数会按照标准的四舍五入规则处理数字:
- 如果小数点后第一位数字小于 5,则舍去。
- 如果小数点后第一位数字大于或等于 5,则进位。
例如:
SELECT ROUND(123.445, 2);
查询结果:
ROUND(123.445, 2) |
---|
123.45 |
这里,123.445
被四舍五入为 123.45
,因为第二位小数(4)后面的第三位(5)是 5 或更大,所以下舍。
3.2 负数处理
如果你对负数应用 ROUND()
,它仍然遵循四舍五入规则:
SELECT ROUND(-123.456, 2);
查询结果:
ROUND(-123.456, 2) |
---|
-123.46 |
3.3 ROUND()
与其他数学函数的结合
你可以将 ROUND()
函数与其他数学函数(如 AVG()
、SUM()
等)结合使用。例如,计算销售额的平均值并四舍五入到两位小数:
SELECT ROUND(AVG(sale_amount), 2) AS avg_sale
FROM sales;
查询结果:
avg_sale |
---|
85.39 |
3.4 ROUND()
与 NULL
值
如果传递给 ROUND()
的参数是 NULL
,它将返回 NULL
,而不会引发错误。为防止这种情况,可以使用 COALESCE()
或 IFNULL()
等函数来处理 NULL
值:
SELECT ROUND(COALESCE(sale_amount, 0), 2) AS rounded_amount
FROM sales;
4. 总结
ROUND()
函数用于将数值四舍五入到指定的小数位数。- 可以指定小数位数,也可以省略该参数来四舍五入为整数。
- 也可以使用负数作为
decimal_places
来四舍五入到十位、百位等。 ROUND()
遵循标准四舍五入规则:若小数点后第一位大于等于 5,则进位。