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;
我们的问题是我们的 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;