---
title: "数字计算操作 - 数据库代理  V4.3.2 | OceanBase 文档中心"
description: 数字计算操作 本文假设数据库中存在表 t1，且 t1 表的 c1 和 c2 列均为 number 类型，结合示例介绍 ODP 中数字计算操作相关函数的使用方法。 说明 本文给出的为数字计算函数的推荐用法，建议您按照本文中的用法进行使用。 本文示例均是假设数据库中存在表 t1 ，并且 t1 表中 c1 列为分区键。 M…
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*nSAhQbrBXKwAAAAAAAAAAAAADiGDAQ/original) 数据库代理 V 4.3.2

# 数字计算操作

更新时间：2026-04-14 17:41:09

[编辑](https://github.com/oceanbase/oceanbase-proxy-doc/edit/V4.3.2/zh-CN/600.data-routing/700.expression-routing/300.numerical-calculation-operation.md)  

本文假设数据库中存在表 t1，且 t1 表的 c1 和 c2 列均为 number 类型，结合示例介绍 ODP 中数字计算操作相关函数的使用方法。

#### 说明

- 本文给出的为数字计算函数的推荐用法，建议您按照本文中的用法进行使用。
 - 本文示例均是假设数据库中存在表 `t1`，并且 `t1` 表中 `c1` 列为分区键。

## MOD

MOD 函数的作用是返回两个数相除后的余数，支持 mod(y,x) 用法，即返回 `y/x` 后的余数。

从表 `t1` 中选取所有 `c1` 列值与 `mod(5,2)`，也就是 `1` 相等的行，ODP 可以将该 SQL 请求准确路由。示例如下：

```shell
select * from t1 where c1=mod(5,2);

```

## NVL

NVL 函数可用于处理 NULL 值，支持 nvl(expr1,expr2) 用法，即如果 `expr1` 为 NULL，则返回 `expr2` 的值，否则返回 `expr1` 的值。

从 `t1` 表中选取 `c1` 列值与字符串 `aaa` 相等的行，ODP 可以将该 SQL 请求准确路由。示例如下：

```shell
select * from t1 where c1=nvl('aaa',0);

```

在处理 NULL 值时，更推荐如下写法：

```shell
select * from t1 where c1 is null
# 或
select * from t1 where c2 is not null

```

## ISNULL

ISNULL 函数的作用是判断参数是否为空，支持 isnull(expr) 用法。

从 `t1` 表中选取 `c1` 列值与 `isnull(mod(5,2))` 相等的行，ODP 可以将该 SQL 请求准确路由。示例如下：

```shell
select * from t1 where c1=isnull(mod(5,2));

```

## ABS

ABS 函数的作用是返回其参数的绝对值，支持 abs(number) 用法。

#### 注意

仅支持参数为数字类型，ODP 遇到不能转换为 number 类型的数据会计算错误，输出为 0。

此处以查询 `t1` 表中 `c1` 列值与 `abs(-100)`，也就是 `100` 相等的行为例，ODP 可以将该 SQL 请求准确路由。示例如下：

```shell
select * from t1 where c1=abs(-100);

```

## CEIL/CEILING

CEIL 和 CEILING 函数的作用均是返回大于或等于其参数的最小整数，此处以 CEIL 函数为例进行介绍。

CEIL 函数支持 ceil(number) 用法，此处以查询 `t1` 表中 `c1` 列值与 `ceil(-7.2)`，也就是 `-7` 相等的行为例，ODP 可以将该 SQL 请求准确路由。示例如下：

```shell
select * from t1 where c1=ceil(-7.2);

```

## FLOOR

FLOOR 函数的作用是返回小于或等于其参数的最大整数，支持 floor(number) 用法，此处以查询 `t1` 表中 `c1` 列值与 `floor(-7.2)`，也就是 `-8` 相等的行为例，ODP 可以将该 SQL 请求准确路由。示例如下：

```shell
select * from t1 where c1=floor(-7.2);

```

## TRUNCATE(MySQL)/TRUNC(Oracle)

TRUNCATE 和 TRUNC 函数分别对应 MySQL 模式和 Oracle 模式，其作用均是对数字进行截断处理（不进行四舍五入）。分别支持如下用法：

- truncate(number,d)

     - number：待截断的数值
     - d：需要保留的小数位数，正数表示小数点后的位数，负数则表示小数点前的位数
 - trunc(number,[scale])

     - number：待截断的数值
     - scale：可选值，用于设置需要保留的小数位数，正数表示小数点后的位数，负数则表示小数点前的位数

此处以 TRUNCATE 函数为例介绍如何使用，若您想要查询 `t1` 表中 `c1` 列值与 `truncate(34.1278,3)`，也就是 `34.127` 相等的行，可执行如下命令：

```shell
select * from t1 where c1=truncate(34.1278,3);

```

## ROUND

ROUND 函数的作用是对数字进行四舍五入操作，根据租户的模式不同分为以下两种用法：

- MySQL 模式：round(number,d)

     - number：待四舍五入的数值
     - d：需要保留的小数位数，正数表示小数点后的位数，负数则表示小数点前的位数
 - Oracle 模式：round(number,[scale])

     - number：待四舍五入的数值
     - scale：可选值，用于设置需要保留的小数位数，正数表示小数点后的位数，负数则表示小数点前的位数

此处以 MySQL 模式为例介绍如何使用，若您想要查询 `t1` 表中 `c1` 列值与 `round(123.123, 1)`，也就是 `123.1` 相等的行，可执行如下命令：

```shell
select * from t1 where c1=round(123.123,1);

```

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
