---
title: "预处理函数 - 导数工具 V4.2.6 | OceanBase 文档中心"
description: "预处理函数 定义控制文件时，用户可以为每一个列配置对应的预处理函数。 注意事项 任何预处理函数的形式参数中只能引用当前列的值，暂不支持跨列引用。例如：不支持 c14 &quot;concat(c15, &#x27;_suffix&#x27;)&quot; ，仅支持 c15 &quot;concat(c15, &#x27;_suffix&#x27;)&quot; 。 预处理函数 LPADB() 和…"
---
切换语言

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

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*eAudSaxX8P0AAAAAAAAAAAAADiGDAQ/original) 导数工具V 4.2.6

# 预处理函数

更新时间：2026-04-13 14:00:52

[编辑](https://github.com/oceanbase/obdumper-loader-doc/edit/V4.2.6/zh-CN/500.OBLOADER/300.obloader-data-processing/200.obloader-preprocessing-functions.md)  

定义控制文件时，用户可以为每一个列配置对应的预处理函数。

## 注意事项

- 任何预处理函数的形式参数中只能引用当前列的值，暂不支持跨列引用。例如：不支持 `c14 "concat(c15, '_suffix')"`，仅支持 `c15 "concat(c15, '_suffix')"`。
 - 预处理函数 `LPADB()` 和 `RPADB()` 适用于字母、数字和中文等字符，处理 Emoji 表情符号时可能会出现截断。
 - 预处理函数 `REPLACE()` 在导数工具中的表现不同于在 Oracle 和 MySQL 中。其语法上更接近 Oracle，实现上更接近 MySQL。
 - 预处理函数 `NVL()` 参考了 MySQL 中对应的内置函数，它在实现上是区分了空字符和 NULL。
 - 与日期时间相关的预处理函数（`SYSTIMESTAMP`、`TMSFMT()` 和 `TO_TIMESTAMP()` 等）只能精确到毫秒。此外，要求工具运行的服务器时钟与数据库服务器时钟相同。
 - 预处理函数 `LPAD(char,length[,pad_string])` 和 `RPAD(char,length[,pad_string])` 参考了 MySQL 中对应的内置函数。参数 length 是最终显示在终端上的返回值的总长度。在大多数字符集中，这会是返回值中的字符数。但是，在某些多字节字符集中，字符串的显示长度可能与字符串中实际的字符数不同，所以此函数在处理多字节值时是不安全的。

## 函数列表

当前版本支持的预处理函数如下：

| **函数签名** | **返回类型** | **描述** |
| --- | --- | --- |
| LOWER(char) | String | 对参数值中的字母转换为小写。 参数值可以是列名、常量或者嵌套表达式。当参数值是常量时，请使用单引号。    示例：`LOWER('A')`。 |
| LTRIM(char[,set]) | String | 对参数值从左到右进行匹配并截断操作。 参数 `char` 的值可以是列名、常量或函数表达式。参数 `set` 的值是常量。若省略参数 `set`，则默认按照空格进行匹配。    示例：`LTRIM(' abc ')`。 |
| RTRIM(char[,set]) | String | 对参数值从右到左进行匹配并截断操作。 参数 `char` 的值可以是列名、常量或函数表达式，参数 `set` 的值是常量。若省略参数 `set`，则默认按照空格进行匹配。    示例：`RTRIM(' abc ')`。 |
| SUBSTR(char,position[,length ]) | String | 对参数值根据起始位置与长度进行截断。 参数 `char` 的值可以是列名、常量或函数表达式，参数 `position` 的值是数值型常量，参数 `length` 的值是数值型常量。    示例：`SUBSTR('abc',0,3)`。 |
| TRIM(char) | String | 对参数值的左右两端进行空格截断。参数 `char` 的值可以是列名、常量或函数表达式。    示例：`TRIM(' abc ')`。 |
| REVERSE(char) | String | 对参数值进行逆序操作。    示例：`REVERSE("C1")` 将颠倒 C1 列值的字符串顺序。 |
| UPPER(char) | String | 对参数值中的字母转换为大写。 参数 `char` 的值可以是列名、常量或者嵌套表达式。当值为常量时，请使用单引号。    示例：`UPPER('a')`。 |
| NANVL(char, default) | String | 对参数值进行数值合法验证，若验证失败，则返回默认值。 参数 `char` 的值可以是列名、常量或函数表达式，参数 `default` 的值是常量。    示例：`NANVL('1','1')`。 |
| REPLACE(char,search[,replacement ]) | String | 对参数值根据搜索条件进行替换。 参数 `char` 的值可以是列名、常量或函数表达式，参数 `search` 的值是常量，参数 `replacement` 的值是常量。    示例：`REPLACE('abc','a','A')`。 |
| NVL(char, default) | String | 对参数值进行判空，若为空，则返回默认值。 参数 `char` 的值可以是列名、常量或函数表达式，参数 `default` 的值是常量。    示例：`NVL('a','--')`。 |
| TO_TIMESTAMP(char,fmt1[,fmt2]) | String | 对参数值进行日期格式化，若转换失败返回 `NULL`。 参数 `char` 的值可以是列名、常量或函数表达式，参数 `fmt1` 的值是日期解析模板，可选参数 `fmt2` 的值是日期格式化模板。    参数 `fmt2` 返回值的默认格式：yyyy-MM-dd HH:mm:ss.SSS。 |
| LENGTH(char) | String | 对参数值进行长度计算。 参数 `char` 的值可以是列名、常量或函数表达式。 |
| LPAD(char,length[,pad_string]) | String | 对参数值从左侧追加指定长度的字符，若指定的长度小于参数长度则截断。 参数 `char` 的值可以是列名、常量或函数表达式，参数 `length` 和 `pad_string` 的值是常量，且参数 `pad_string` 的值要求传入单字节字符。    示例：`LPAD('a',1,'x')`。 |
| RPAD(char,length[,pad_string]) | String | 对参数值从右侧追加指定长度的字符，指定的长度小于参数长度则截断。 参数 `char` 的值可以是列名、常量或函数表达式，参数 `length` 和 `pad_string` 的值是常量，且参数 `pad_string` 的值要求传入单字节字符。    示例：`RPAD('a',1,'x')`。 |
| CONVERT(char,charset1[,charset2]) | String | 对参数值进行字符编码转换。 参数 `char` 的值可以是列名、常量或函数表达式，参数 `charset1` 和 `charset2` 的值是常量。    示例：`CONVERT('a','utf-8','gbk')`。 |
| CONCAT(char1,char2) | String | 对参数值进行拼接。 参数 `char1` 和 `char2` 的值可以是列名、常量或函数表达式。    示例：`CONCAT('a','b')`。 |
| NONE | String | 对参数不作任何处理，直接返回参数值。 |
| SYSTIMESTAMP | String | 对参数不作任何处理，直接返回当前机器的时间戳。    默认格式：yyyy-MM-dd HH:mm:ss.SSS。 |
| SYSDATE | String | 对参数不作任何处理，直接返回当前机器的日期。    默认格式：yyyy-MM-dd HH:mm:ss。 |
| CONSTANT(char) | String | 对参数不作任何处理，直接返回定义的常量值。参数 `char` 的值是常量。    示例：`CONSTANT('1')`。 |
| TMSFMT(char,fmt1,default,fmt2) | String | 对参数进行日期格式验证，若验证失败，则返回默认的日期格式。    示例：`TMSFMT(c1,'yyyyMMddHHmmssSSS','2021-03-10 00:00:00.000','yyyy-MM-dd HH:mm:ss.SSS')`。 |
| LPADB(char,byte_size[,pad_char]) | String | 对参数值从左侧追加指定长度的字节，指定的长度小于参数长度则截断。 参数 `char` 的值可以是列名、常量或函数表达式，参数 `byte_size` 和 `pad_char` 的值是常量。    示例：`LPADB('a',1,'x')`。 |
| RPADB(char,byte_size[,pad_char]) | String | 对参数值从右侧追加指定长度的字节，指定的长度小于参数长度则截断。 参数 `char` 的值可以是列名、常量或函数表达式，参数 `byte_size` 和 `pad_char` 的值是常量。    示例：`RPADB('a',1,'x')`。 |
| MASK(string str[, string upper[, string lower[, string number]]]) | String | 对字段中的大小写字母、数字进行脱敏操作。    示例：`MASK("C1"，A，a，b)` ，将 C1 列的大写字母转换为字母 A，小写字母转化为 a，数字转换为 b。 |
| MASK_FIRST_N(string str[, int n]) | String | 指定对字段值的前 n 个字符进行脱敏操作。    示例：`MASK_FIRST_N("C1"，'A','a','b'，5)`，将 C1 列的前 5 个字符中的大写字母转换为字母 A，小写字母转化为 a，数字转换为 b。 |
| MASK_LAST_N(string str[, int n]) | String | 指定对字段值的后 n 个字符进行脱敏操作。    示例：`MASK_LAST_N("C1"，'A','a','b'，5)`，将 C1 列的后 5 个字符中的大写字母转换为字母 A，小写字母转化为 a，数字转换为 b。 |
| MASK_SHOW_FIRST_N(string str[, int n]) | String | 指定对除前 n 个字符之外的所有字符进行脱敏操作。    示例：`MASK_SHOW_FIRST_N("C1"，'A','a','b'，5)`，将 C1 列的除前 5 个字符之外的所有字符中的大写字母转换为字母 A，小写字母转化为 a，数字转换为 b。 |
| MASK_SHOW_LAST_N(string str[, int n]) | String | 指定对除后 n 个字符之外的所有字符进行脱敏操作。    示例：`MASK_SHOW_LAST_N("C1"，'A','a','b'，5)`，将 C1 列的除后 5 个字符之外的所有字符中的大写字母转换为字母 A，小写字母转化为 a，数字转换为 b。 |
| SEQUENCE(int m,int n) | String | 对指定的列生成递增的序列值，m 代表初始值，n 代表递增值。    示例：`SEQUENCE(100,1)` 生成初始值为 100，递增值为 1 的序列。 |
| DB_SEQUENCE(string sequence) | String | 指定数据库中已定义的序列导入数据。    示例：`DB_SEQUENCE(seq01)`，指定序列值为 seq01。   > **说明**   > OBLOADER 4.1.0 及之后的版本支持该功能。 |
| CHR(string) | String | 将字符串表示的数字转换为对应 ASCII 字符。   - 如果 `string` 大于 256，则函数等效于 `'string' mod 256`。     示例：`CHR ('10')` 与 `CHR('266')` 的结果均为 `'\n'`。 - 如果任意一个参数为 `NULL`， `CHR()` 将返回 `NULL`。 - 参数值可以是列名或常量。当参数值是常量时，请使用单引号。     示例：`CHR('13')`, `CHR(c1)`。 |
| NCHR(string) | String | 将字符串表示的数字转换成 NVARCHAR2 类型。   - 区别于 CHR，NCHR 可以处理大于 256 的参数。     示例：`NCHR('257')` 将返回 `ā`。 - 如果任意一个参数为 NULL， NCHR() 将返回 NULL。 - 参数值可以是列名或常量。当参数值为**常量**时，请使用**单引号**。     示例：`NCHR('13')`, `NCHR(c1)`。 |
| ASCII(char) | String | 将字符转换成十进制 ASCII 码。   - 如果传入多个字符，其仅转换第一个字符。     示例：`ASCII('A')` 与 `ASCII('abc')` 均返回 `'65'`。 - 参数值可以为列名或常量。当参数值是**常量**时，请使用**单引号**。     示例：`ASCII('A')`, `ASCII(c1)`。 |
| RAWTOHEX(string) | String | 将原始字符串转换为十六进制表示的字符串。   参数值可以为列名或常量。当参数为**常量**时，请使用**单引号**。   示例：`RAWTOHEX('ABC')`, `RAWTOHEX(c1)`。 |
| HEXTORAW(string) | String | 将十六进制表示的字符串还原成原始字符串。   参数值可以为列名或常量。当参数值为**常量**时，请使用**单引号**。   示例：`HEXTORAW('414243')`, `HEXTORAW(c1)`。   #### 说明    OBDUMPER 仅支持处理不包含 `0x` 或仅以 `0x` 为前缀的十六进制数据，请通过嵌套 `replace` 函数去除包含 `0x` 的数据（非前缀）。示例：`lang=java (c1 "hextoraw(replace(c1, '0x', ''))");` |
| REPLACE(char,search[,replacement ]) | String | 根据搜索条件替换参数值。   参数 `char` 可以为列名、常量或者函数表达式；参数 `search` 的值可以为常量或者函数表达式；参数 `replacement` 的值为常量。   示例：`REPLACE('abc','a','A')`, `REPLACE('abc',CHR('13'),'!')` |
| TRUNC(number[, decimal]) | String | 对数字进行截断。   - `number` 表示被截断的数字；`decimal` 表示截断的小数位。示例：`TRUNC(22.29, 1)`，返回 `22.2`。 - 如果省略 `decimal`，则 `number` 将被截断至 0 位。     示例：`TRUNC(22.29)`，返回 `22`。 - `decimal` 可以为负数，表示截断 `number` 小数点左侧的数字（使其为零）。     示例：`TRUNC(22.29, -1)`，返回 `20`。    #### 说明    此函数的参数支持任何数值数据类型、非数值数据类型（可隐式转换为数值数据类型）。 |

#### 注意

OBLOADER 3.x 版本不再支持 groovy 动态函数。

  上一篇 下一篇 ![有帮助](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) 咨询热线
