【发布时间】:2015-03-17 15:33:50
【问题描述】:
我们的问题是我们的 XLS 在“文本”字段中有例如“0112”
然后有人将这张表(不确定是否复制/粘贴)转移到另一个电子表格中,他们丢失了 0,并且 CSV 有“112”(很难看到,但 112 后面有一个空格)
然后一些 java 代码读取 csv 并将值插入数据库表 (Oracle 11g) 并且该字段是 char(4) 类型,因此它似乎在末尾附加了一个空格,我们最终得到 '112'。
是否有某种方法可以向 Oracle 表/列添加一些约束以不自动填充或添加额外空间,我们希望在尝试将 112 插入 char(4) 时收到一些错误
【问题讨论】:
-
检查约束 char_length(col) = 4? (char_length 或类似。)
-
可能是一个触发器,尽管可能是
:new.YourColumn已在触发器中填充。 -
CHAR数据类型的规范是它总是用空格填充到指定的长度。基本上没有理由更喜欢CHAR(x)而不是VARCHAR2(x),而且有很多理由更喜欢VARCHAR2。您可以对检查长度的VARCHAR2施加约束这一事实就是其中之一。将列更改为VARCHAR2是一个选项吗? -
@JustinCave 作为更改字段类型的选项不太可能,因为我们公司的官僚作风相当分层
标签: sql database oracle11g constraints