REMAINDER
📄字数 803
👁️阅读量 加载中...
功能描述
求余数,返回(expr1 - n * expr2)
的值,其中n
是expr1/expr2
的最接近整数(四舍五入)。
语法格式
sql
REMAINDER(expr1, expr2)
输入参数
expr1
:数值类型,或能隐式转换为数值类型的其他类型的值或者表达式。expr2
:数值类型,或能隐式转换为数值类型的其他类型的值或者表达式。
提示
可通过系统参数error_for_division_zero
(默认值为TRUE),控制除数expr2
为零时数据库处理规则。参数值为TRUE时报错,为FALSE时返回NULL
。
两个参数为DOUBLE/FLOAT
类型时,不受error_for_division_zero
参数控制,直接返回NAN
。
输出结果
输出结果类型与输入参数类型一致。如果任意输入参数为 NULL
,则输出结果为 NULL
。
示例
sql
-- 查询8/3和15.2/2.1的余数
SQL> SELECT REMAINDER(8,3),REMAINDER(15.2,2.1) FROM dual;
+-------+-------+
| EXPR1 | EXPR2 |
+-------+-------+
| -1 | 0.5 |
+-------+-------+
-- 设置error_for_division_zero为true,除数为零时直接报错
SQL> SHOW error_for_division_zero;
+-------------------------+
| ERROR_FOR_DIVISION_ZERO |
+-------------------------+
| T |
+-------------------------+
SQL> SELECT REMAINDER(1,0);
Error: [E19005 L1 C8] 除数为0
-- double类型,除数为零,返回NaN
SQL> SELECT REMAINDER(1.1::double,0::double);
+-------+
| EXPR1 |
+-------+
| NaN |
+-------+
-- -- float类型,除数为零,返回NaN
SQL> SELECT REMAINDER(1.1::float,0::float);
+-------+
| EXPR1 |
+-------+
| NaN |
+-------+
-- 设置error_for_division_zero为false,除数为零时返回NULL
SQL> SET error_for_division_zero TO FALSE;
SQL> SHOW error_for_division_zero;
+-------------------------+
| ERROR_FOR_DIVISION_ZERO |
+-------------------------+
| F |
+-------------------------+
SQL> SELECT REMAINDER(1,0);
+--------+
| EXPR1 |
+--------+
| <NULL> |
+--------+