varchar和varchar2的区别是什么?
当前回答
目前VARCHAR的行为与VARCHAR2完全相同。但是,不应该使用VARCHAR类型,因为它是为将来使用而保留的。
取自:不同点CHAR, VARCHAR, VARCHAR2
其他回答
就目前而言,它们是同义词。
VARCHAR由Oracle保留,以支持将来区分NULL和空字符串,正如ANSI标准所规定的那样。
VARCHAR2不会区分NULL和空字符串,而且永远不会。
如果你依赖空字符串和NULL是一样的东西,你应该使用VARCHAR2。
目前,它们是一样的。但以前
我在网上看到,
VARCHAR由Oracle保留,以支持将来区分NULL和空字符串,正如ANSI标准所规定的那样。
VARCHAR2不会区分NULL和空字符串,而且永远不会。
同时,
Emp_name varchar(10) -如果输入的值小于10位,则无法删除剩余空间。它总共使用了10个空格。
Emp_name varchar2(10) -如果输入的值小于10位数字,则自动删除剩余空间
目前VARCHAR的行为与VARCHAR2完全相同。但是,不应该使用VARCHAR类型,因为它是为将来使用而保留的。
取自:不同点CHAR, VARCHAR, VARCHAR2
VARCHAR最多可以存储2000字节的字符,而VARCHAR2最多可以存储4000字节的字符。 如果我们将数据类型声明为VARCHAR,那么它将占用NULL值的空间。在VARCHAR2数据类型的情况下,它不会为NULL值占用任何空间。例如, 名字varchar (10)
将保留6个字节的内存,即使名称是'Ravi__',而
name varchar2(10)
将根据输入字符串的长度预留空间。例如,“Ravi__”的4字节内存。
这里,_表示NULL。
注意:varchar将为空值保留空间,而varchar2将不为空值保留任何空间。
经过一些实验(见下文),我可以确认,截至2017年9月,关于公认答案中描述的功能,没有任何变化:-
Rextester演示Oracle 11g: 对于两个VARCHAR,空字符串都作为null插入 和VARCHAR2。 Oracle 12c的LiveSQL演示:同样的结果。
这两个关键词的历史原因在另一个问题的答案中得到了很好的解释。
推荐文章
- ORA-12505, TNS:监听器当前不知道连接描述符中给定的SID
- SQL在Oracle中连接多行列值的查询
- 如何检查SQL Server文本列是否为空?
- GROUP BY with MAX(DATE)
- 如何从Oracle的表中获取列名?
- 数据库性能调优有哪些资源?
- Oracle中表名的最大长度是多少?
- oracle中的RANK()和DENSE_RANK()函数有什么区别?
- 什么时候我需要在Oracle SQL中使用分号vs斜杠?
- 在MySQL数据库中存储货币值的最佳数据类型
- 如何在Oracle SQL开发人员中找到引用给定表的表?
- 如何在Oracle SQL开发人员中设置自定义日期时间格式?
- 为什么Oracle 9i将空字符串视为NULL?
- NVL和Coalesce之间的Oracle差异
- 不可重复读和幻影读的区别是什么?