SQL Developer用空格填充字符中的剩余空间
我有一个数据类型为char(256)的属性。我通过SQL Developer从csv文件导入值 当属性获得一个包含10个字符的值时,剩余的空间将被空格填充 我知道char是静态分配空间的,但这是否也意味着我得到了一个类似“abc”格式的字符串SQL Developer用空格填充字符中的剩余空间,sql,oracle,Sql,Oracle,我有一个数据类型为char(256)的属性。我通过SQL Developer从csv文件导入值 当属性获得一个包含10个字符的值时,剩余的空间将被空格填充 我知道char是静态分配空间的,但这是否也意味着我得到了一个类似“abc”格式的字符串 因为这使得使用相等运算符的sql语句变得很困难。您在错误的观念下操作;它与SQL开发人员无关 CHAR数据类型是固定长度的字符串;如果您不提供完整长度的字符串,Oracle将用空格(ASCII 32)字符右键填充该字符串,直到其具有正确的长度 从: CHA
因为这使得使用相等运算符的sql语句变得很困难。您在错误的观念下操作;它与SQL开发人员无关
CHAR
数据类型是固定长度的字符串;如果您不提供完整长度的字符串,Oracle将用空格(ASCII 32)字符右键填充该字符串,直到其具有正确的长度
从:
CHAR
Datatype
CHAR
数据类型存储固定长度的字符串。创建包含CHAR
列的表时,必须为CHAR
列宽指定1到2000字节之间的字符串长度(以字节或字符为单位)。默认值为1字节。Oracle保证:
- 在表中插入或更新行时,
列的值具有固定长度CHAR
- 如果给出较短的值,则该值为空白,并填充到固定长度
- 如果值太大,Oracle数据库将返回一个错误
CHAR
值
要解决此问题,请不要对可变长度字符串使用CHAR
,而是使用VARCHAR2
VARCHAR2
和VARCHAR
数据类型
VARCHAR2
数据类型存储可变长度字符串。创建包含VARCHAR2
列的表时,可以为VARCHAR2
列指定1到4000字节之间的最大字符串长度(以字节或字符为单位)。对于每一行,Oracle数据库将列中的每个值存储为可变长度字段,除非某个值超过列的最大长度,否则Oracle数据库将返回一个错误。使用VARCHAR2
和VARCHAR
可以节省表使用的空间
你是在一种误解下运作的;它与SQL开发人员无关
CHAR
数据类型是固定长度的字符串;如果您不提供完整长度的字符串,Oracle将用空格(ASCII 32)字符右键填充该字符串,直到其具有正确的长度
从:
CHAR
Datatype
CHAR
数据类型存储固定长度的字符串。创建包含CHAR
列的表时,必须为CHAR
列宽指定1到2000字节之间的字符串长度(以字节或字符为单位)。默认值为1字节。Oracle保证:
- 在表中插入或更新行时,
列的值具有固定长度CHAR
- 如果给出较短的值,则该值为空白,并填充到固定长度
- 如果值太大,Oracle数据库将返回一个错误
CHAR
值
要解决此问题,请不要对可变长度字符串使用CHAR
,而是使用VARCHAR2
VARCHAR2
和VARCHAR
数据类型
VARCHAR2
数据类型存储可变长度字符串。创建包含VARCHAR2
列的表时,可以为VARCHAR2
列指定1到4000字节之间的最大字符串长度(以字节或字符为单位)。对于每一行,Oracle数据库将列中的每个值存储为可变长度字段,除非某个值超过列的最大长度,否则Oracle数据库将返回一个错误。使用VARCHAR2
和VARCHAR
可以节省表使用的空间
您可以使用varchar2而不是char作为数据类型来避免这种情况
或者,您可以使用rtrim(columnname)在查询中修剪数据。您可以使用varchar2而不是char作为数据类型来避免这种情况
或者您可以使用rtrim(columnname)
varchar
而不是char
(即固定大小)来修剪查询中的数据。没有充分的理由使用它。而且。Oracle中的标准字符串类型是varchar2
varchar
而不是char
(即固定大小),最好是。没有充分的理由使用它。而且。Oracle中的标准字符串类型是varchar2
。因此,我应该始终使用varchar2,如果我确定所有条目的长度都相同,我可以使用char来获得更好的性能?是的,只有在所有记录大小相同时,才应该使用char。希望你的问题已经解决。如果需要从任何char字段检索数据,并且不确定它们的大小是否变化,则可以用rTrime(或)(rpad)()来从右侧修整所有空白空间。。因此,我应该始终使用VARCHAR2,如果我确定所有条目的长度都相同,我可以使用char以获得更好的性能?是的,如果所有记录的大小相同,您应该只使用char。希望你的问题已经解决。如果需要从任何char字段检索数据,并且不确定它们的大小是否变化,则可以用rTrime(或)(rpad)()来从右侧修整所有空白空间。.所以我应该始终使用VARCHAR2,如果我确定所有条目的长度都相同,我可以使用char来提高性能?因此我应该始终使用VARCHAR2,如果我确定所有条目的长度都相同,我可以使用char来提高性能?