You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle中BLANK_TRIMMING设为TRUE时,CHAR类型数据如何存储?

Oracle初始化参数BLANK_TRIMMING=TRUE时CHAR列的存储规则

当Oracle的初始化参数BLANK_TRIMMING设置为TRUE时,CHAR类型列的存储行为明确如下:

  • 插入数据时,尾部的所有空格会被自动截断,仅保留到最后一个非空格字符的位置,不会按照CHAR列定义的长度补空格。
  • 数据中间的空格不会被处理,会完整保留。

针对你给出的示例:

-- BLANK_TRIMMING is set TRUE
create table t(c1 char(20));

insert into t values('Hello');
insert into t values('World   ');
insert into t values('Hello World   ');

三条数据的实际存储内容如下:

  • 第一条:'Hello'(无尾部空格)
  • 第二条:'World'(原尾部的三个空格被截断)
  • 第三条:'Hello World'(原尾部的三个空格被截断,中间的空格保留)

你可以通过以下SQL验证存储的实际长度和内容:

SELECT c1, LENGTH(c1) AS actual_length FROM t;

执行后会返回:

C1ACTUAL_LENGTH
Hello5
World5
Hello World11

可见实际存储的字符长度均为非空格内容的长度,而非CHAR定义的20。

内容的提问来源于stack exchange,提问作者HeetCho

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 05:51:03