如果BLANK_TRIMMING参数设置为TRUE,CHAR类型如何存储? (甲骨文)

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

我想知道如果初始化参数'BLACK_TRIMMING'设置为TRUE,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   ');

在此示例中,我创建了一个具有 CHAR(10) 类型列的表并插入了 2 条数据。 我想知道这两个数据是如何存储的。

‘你好’ '世界' “你好世界”

数据是这样存储的吗?

sql oracle ddl
1个回答
0
投票

对于此类问题,请参阅 Oracle

BLANK_TRIMMING
文档

1.35 空白_修剪

BLANK_TRIMMING
指定字符数据类型的数据分配语义。

价值观

  • TRUE

    即使源长度长于目标长度,也允许将源字符串或变量的数据分配给目标字符列或变量。然而,在这种情况下,目标长度上的附加长度必须全部为空白,否则会引发异常情况。该值符合 SQL-92 Transitional Level 及以上的语义。

  • FALSE

    如果源长度长于目标长度,则不允许数据分配并恢复为 SQL92 入门级语义。

所以这个参数NOT以与

CHAR
类似的方式存储
VARCHAR2
类型;相反,当且仅当超过列长度的字符全部为空白时,它使您能够将超过列长度的值插入到列中。

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