首批通过分布式安全可靠测评,为关键业务系统打造
预处理函数
更新时间:2026-04-13 14:00:52
定义控制文件时,用户可以为每一个列配置对应的预处理函数。
注意事项
任何预处理函数的形式参数中只能引用当前列的值,暂不支持跨列引用。例如:不支持
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。
说明 |
| CHR(string) | String | 将字符串表示的数字转换为对应 ASCII 字符。
|
| NCHR(string) | String | 将字符串表示的数字转换成 NVARCHAR2 类型。
|
| ASCII(char) | String | 将字符转换成十进制 ASCII 码。
|
| RAWTOHEX(string) | String | 将原始字符串转换为十六进制表示的字符串。 参数值可以为列名或常量。当参数为常量时,请使用单引号。 示例: RAWTOHEX('ABC'), RAWTOHEX(c1)。 |
| HEXTORAW(string) | String | 将十六进制表示的字符串还原成原始字符串。 参数值可以为列名或常量。当参数值为常量时,请使用单引号。 示例: HEXTORAW('414243'), HEXTORAW(c1)。
说明OBDUMPER 仅支持处理不包含 |
| REPLACE(char,search[,replacement ]) | String | 根据搜索条件替换参数值。 参数 char 可以为列名、常量或者函数表达式;参数 search 的值可以为常量或者函数表达式;参数 replacement 的值为常量。示例: REPLACE('abc','a','A'), REPLACE('abc',CHR('13'),'!') |
| TRUNC(number[, decimal]) | String | 对数字进行截断。
说明此函数的参数支持任何数值数据类型、非数值数据类型(可隐式转换为数值数据类型)。 |
注意
OBLOADER 3.x 版本不再支持 groovy 动态函数。