此处的脚本始终将varchar2列声明为varchar2(n char)。我没有看到任何差异,只是好奇。谢谢!
答案 0 :(得分:6)
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)或你的系统。