初始化参数 BLANK_PAD_MODE 的具体含义是什么?

【问题描述】

初始化参数 BLANK_PAD_MODE 的具体含义是什么。

【问题原因】

BLANK_PAD_MODE 主要用于 Oracle 数据的兼容,达梦数据库默认设置 BLANK_PAD_MODE=0,即在做数据对比时,默认会截断字符结尾的空格,而 Oracle 默认是会识别到字符结尾的空格。 设置如下场景验证:

-- 1. 在 BLANK_PAD_MODE=0 时
SQL> create table student(id int, name varchar(20));
SQL> insert into student values (1,'blank ');
SQL> commit;
SQL> insert into student values (1,'blank');
SQL> commit;
SQL> create unique index idx_test_blank on student(name);
create unique index idx_test_blank on student(name);
[-6612]:违反唯一性约束.
已用时间: 4.925(毫秒). 执行号:0.

2. 在BLANK_PAD_MODE=1时,同样的表和数据
登录使用时间 : 4.018(ms)
disql V8
SQL> create unique index idx_test_blank on student(name);
操作已执行
已用时间: 5.721(毫秒). 执行号:50700.

执行创建唯一索引会成功。

【问题解决】

理解 BLANK_PAD_MODE 参数含义后,如需达到与 Oracle 一致的空格识别行为(即不自动截断字符结尾的空格),可将该参数设置为 BLANK_PAD_MODE=1;如需保持默认的达梦数据库行为,则保持 BLANK_PAD_MODE=0 即可。