Sql Oracle中的VARCHAR 50和VARCHAR 50字节之间有什么区别?

Sql Oracle中的VARCHAR 50和VARCHAR 50字节之间有什么区别?,sql,oracle,oracle11g,oracle-sqldeveloper,Sql,Oracle,Oracle11g,Oracle Sqldeveloper,我最近看到了一个SQL定义,其中的内容是: VARCHAR2(50字节) 还有一些 VARCHAR2(50) 两者之间有区别吗?在这种情况下,两者是相同的。因为,默认情况下,当您省略类型时,它默认为设置为默认值的内容(可以是BYTE或CHAR)。但是,您可能已将其指定为CHAR(您可以选择BYTE或CHAR) 有关更多信息- 它们不一定相同。如果不指定类型,则取决于会话参数nls\u length\u semantics,该参数默认为同一系统参数,默认为BYTE。“如果不指定类型,则默认为BY

我最近看到了一个SQL定义,其中的内容是:

VARCHAR2(50字节)

还有一些

VARCHAR2(50)


两者之间有区别吗?

在这种情况下,两者是相同的。因为,默认情况下,当您省略类型时,它默认为设置为默认值的内容(可以是BYTE或CHAR)。但是,您可能已将其指定为
CHAR
(您可以选择
BYTE
CHAR

有关更多信息-


它们不一定相同。如果不指定类型,则取决于会话参数
nls\u length\u semantics
,该参数默认为同一系统参数,默认为BYTE。“如果不指定类型,则默认为BYTE”-不正确。它默认设置为默认值,可能是byte或char.husqvik-你同意@a_horse所说的吗?我觉得我听到的有点不同,我基本上和Husqvik说的是一样的。还有一个数据库参数控制它(会话“继承”自它),我个人更喜欢这里的答案:。