为什么我不能 trim CHAR 类型的列?
Why can't I trim a column of type CHAR?
如标题所说,如果在我的数据库中创建 table :
创建 TABLE 测试
(
FIELD CHAR(20 CHAR) NULL
)
无记录
无压缩
NOCACHE;
插入这个:
插入测试
(场地)
价值观
('TEST -here are blank spaces- ');
提交;
然后我运行下面的语句:
更新测试集字段 = TRIM(字段);
提交;
但是该字段仍然有空格,请注意,如果我将数据类型更改为 varchar2,它会起作用...有人知道为什么吗?
谢谢!
char
是固定宽度的数据类型。 char(20)
的长度永远为 20。如果您尝试插入较短的字符串,它将用空格填充到该字段的固定宽度长度。所以
UPDATE TEST SET FIELD = TRIM(FIELD);
由于 trim
函数删除了空格,然后将它们添加回去,因为写入的字符串必须恰好为 20 个字节长。
实际上,几乎没有使用 char
的情况。 varchar2
你几乎总是过得更好。 varchar2
是可变长度数据类型,因此数据库不需要将空格附加到末尾。
如标题所说,如果在我的数据库中创建 table :
创建 TABLE 测试 ( FIELD CHAR(20 CHAR) NULL ) 无记录 无压缩 NOCACHE;
插入这个:
插入测试 (场地) 价值观 ('TEST -here are blank spaces- '); 提交;
然后我运行下面的语句:
更新测试集字段 = TRIM(字段); 提交;
但是该字段仍然有空格,请注意,如果我将数据类型更改为 varchar2,它会起作用...有人知道为什么吗?
谢谢!
char
是固定宽度的数据类型。 char(20)
的长度永远为 20。如果您尝试插入较短的字符串,它将用空格填充到该字段的固定宽度长度。所以
UPDATE TEST SET FIELD = TRIM(FIELD);
由于 trim
函数删除了空格,然后将它们添加回去,因为写入的字符串必须恰好为 20 个字节长。
实际上,几乎没有使用 char
的情况。 varchar2
你几乎总是过得更好。 varchar2
是可变长度数据类型,因此数据库不需要将空格附加到末尾。