首页 文章

不同数据库的最大Varchar和Varchar2大小/长度[关闭]

提问于
浏览
-3

VARCHAR和VARCHAR2的大小限制在各种SQL RDBMS实现中是不同的还是相同的?感谢帮助 .

1 回答

  • 2

    首先, varchar 用于MySQL, varchar2 用于Oracle . 此外,varchar和varchar2的大小和限制因数据库而异 .

    参考来自:http://docs.oracle.com/cd/E12151_01/doc.150/e12155/oracle_mysql_compared.htm

    MySQL和Oracle在它们支持的字符类型以及它们存储和检索字符类型值的方式上存在一些差异 . MySQL支持字符类型的CHAR和VARCHAR类型,其长度小于65,535字节 . CHAR类型的最大长度为255个字节,从MySQL 3.23开始,它也可以以0字节的长度声明 . 在MySQL 5.0.3之前,VARCHAR类型的长度规范与CHAR类型相同 . 从MySQL 5.0.3开始,VARCHAR类型的最大长度为65,535字节 . Oracle支持四种字符类型:CHAR,NCHAR,NVARCHAR2和VARCHAR2 . 可以为所有Oracle字符类型声明的最小长度为1个字节 . CHAR和NCHAR允许的最大大小为2,000字节,NVARCHAR2和VARCHAR2允许的最大大小为4,000字节 . MySQL CHAR值在存储时用空格填充指定长度,并在检索值时删除尾随空格 . 另一方面,使用给定的字符数来存储VARCHAR值,但在存储和检索值之前删除MySQL 5.0.3尾随空格之前 . 如果值小于列长度,则Oracle将其CHAR和NCHAR类型的值填充到列长度,并且在检索时不删除尾随空格 . 对于NVARCHAR2和VARVHAR2数据类型列,Oracle完全按给定的方式存储和检索值,包括尾随空格 . 如果将值分配给超出其指定长度的字符类型列,则MySQL将截断该值,并且除非设置了STRICT SQL模式,否则不会生成错误 . 如果分配给字符类型列的值超过其指定长度,Oracle将生成错误 . 在MySQL中,每个字符类型(CHAR,VARCHAR和TEXT)列都有一个列字符集和排序规则 . 如果未在列定义中显式定义字符集或排序规则,则在指定时隐含表字符集或排序规则;否则,选择数据库字符或排序规则 . 在Oracle中,CHAR和VARCHAR2类型的字符集由数据库字符集定义,而NCHAR和NVARCHAR类型的字符集定义为国家字符集 . 在MySQL中声明CHAR或VARCHAR类型时,MySQL 4.1及更高版本的默认长度语义是字符而不是字节 . 在Oracle中,默认长度语义是CHAR和VARCHAR2类型的字节以及NCHAR和NVARCHAR2类型的字符 . SQL Developer将分别将MySQL CHAR和VARCHAR类型映射到Oracle CHAR和VARCHAR2类型 . SQL Developer将根据为相应的MySQL CHAR和VARCHAR数据类型列指定的最大长度所需的字节数确定Oracle CHAR和VARCHAR2数据类型列的最大字节数 . 如果MySQL VARCHAR2列的数据超过4000字节,请将列转换为Oracle CLOB数据类型列 .

相关问题