varchar2(n)和varchar2(n char)之间的Oracle SQL区别

时间:2013-05-10 02:28:42

标签: sql oracle

此处的脚本始终将varchar2列声明为varchar2(n char)。我没有看到任何差异,只是好奇。谢谢!

2 个答案:

答案 0 :(得分:6)

基于this resource

  

Oracle9i及更高版本允许将Varchar2列定义为多个字节VARCHAR2(50 BYTE)或多个字符VARCHAR2(50 CHAR),如果数据库转换为运行双精度数,则后者非常有用字节字符集(例如日语),您不必编辑列大小。默认度量通常为BYTE,使用nls_length_semantics设置。

     

如果您创建一个列为Varchar2(50)但只存储10个字节,那么Oracle只会将10个字节保存到光盘。这并不意味着您只需创建Varchar2(4000)列以防万一需要空间',这是一个非常糟糕的想法,会降低应用程序的性能和可维护性。

答案 1 :(得分:3)

语法为VARCHAR2(n)VARCHAR2(n BYTE|CHAR)

(n)和(n BYTE)的默认值通常相同。 (n CHAR)可能不等同于(n | BYTE)或(n),除非您将NLS_LENGTH_SEMANTICS参数设置为您想要的,CHAR或BYTE。此设置适用于使用多字节字符的字符集。例如,通常不适用于UTF8。

请勿更改它,因为现有代码可以正常运行。

我猜想(n)==(n CHAR)==(n BYTE)或你的系统。