char(4) 字段上的 Oracle 列约束不接受插入 3 个字符值

Oracle Column Constraint on char(4) field to not accept insert of 3 char value

我们的问题是我们的 XLS 在 "Text" 字段中有例如“0112”

然后有人将这个 sheet(不确定是否 copy/paste)转移到另一个传播sheet 并且他们丢失了 0,并且 CSV 有'112'(很难看到但是112)

后面有个space

然后一些 java 代码读取 csv 并将值插入数据库 table (Oracle 11g) 并且该字段是 char(4) 类型,因此它似乎附加了一个 space 到最后,我们以“112”结束。

有什么方法可以向 Oracle table/column 添加一些约束以不自动填充或添加额外的 space,我们希望在尝试将 112 插入 char 时收到一些错误(4)

你总是可以尝试添加一个约束来检查你的字符串的长度是 4,在去掉任何空格之后:

create table test1 (col1 char(4));

alter table test1 add constraint t1_chk check (length(trim(col1)) = 4);

-- the following inserts ok
insert into test1 values ('1234');

-- the following fails
insert into test1 values ('112 ');

commit;