防止 Oracle 中字符类型列的查询响应中出现空白填充

问题描述 投票:0回答:1

我在 Oracle 数据库中有一个表,其列类型是

char(100)

身份证 价值
1 测试

插入时,“测试”值由 oracle 填充为空白。 当我从数据库中选择这一行时,我必须修剪它以获得非填充值。

select trim(value) from mytable where id = 1

这没有意义,因为它不是实际插入的值。有没有任何解决方案可以在不使用

trim
或将列类型更改为
varchar
的情况下获取实际的非填充值?

database oracle plsql oracle11g
1个回答
0
投票

简短的回答是“不”,没有办法做到这一点。

CHAR
数据类型会自动将您插入的值填充到列的完整大小。根据我的经验,很少使用
CHAR
,因为它会占用磁盘空间并增加存储要求,即使对于空值也是如此。如果您只想存储数据而不进行填充,则必须使用
VARCHAR2

请参阅此处:https://www.oracletutorial.com/oracle-basics/oracle-char/

当插入或更新固定长度字符串列时, Oracle 将字符存储为定长数据。

这意味着如果您存储的值的长度小于 列中定义的最大长度,Oracle 将空格填充到 字符串达到最大长度。

© www.soinside.com 2019 - 2024. All rights reserved.