Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Developer用空格填充字符中的剩余空间_Sql_Oracle - Fatal编程技术网

SQL Developer用空格填充字符中的剩余空间

SQL Developer用空格填充字符中的剩余空间,sql,oracle,Sql,Oracle,我有一个数据类型为char(256)的属性。我通过SQL Developer从csv文件导入值 当属性获得一个包含10个字符的值时,剩余的空间将被空格填充 我知道char是静态分配空间的,但这是否也意味着我得到了一个类似“abc”格式的字符串 因为这使得使用相等运算符的sql语句变得很困难。您在错误的观念下操作;它与SQL开发人员无关 CHAR数据类型是固定长度的字符串;如果您不提供完整长度的字符串,Oracle将用空格(ASCII 32)字符右键填充该字符串,直到其具有正确的长度 从: CHA

我有一个数据类型为char(256)的属性。我通过SQL Developer从csv文件导入值 当属性获得一个包含10个字符的值时,剩余的空间将被空格填充

我知道char是静态分配空间的,但这是否也意味着我得到了一个类似“abc”格式的字符串


因为这使得使用相等运算符的sql语句变得很困难。

您在错误的观念下操作;它与SQL开发人员无关

CHAR
数据类型是固定长度的字符串;如果您不提供完整长度的字符串,Oracle将用空格(ASCII 32)字符右键填充该字符串,直到其具有正确的长度

从:

CHAR
Datatype
CHAR
数据类型存储固定长度的字符串。创建包含
CHAR
列的表时,必须为
CHAR
列宽指定1到2000字节之间的字符串长度(以字节或字符为单位)。默认值为1字节。Oracle保证:

  • 在表中插入或更新行时,
    CHAR
    列的值具有固定长度
  • 如果给出较短的值,则该值为空白,并填充到固定长度
  • 如果值太大,Oracle数据库将返回一个错误
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数据库将返回一个错误
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来提高性能?