Oracle11g 使用unicode字符集选项安装oracle 11g时,char和nchar数据类型之间有什么区别?

Oracle11g 使用unicode字符集选项安装oracle 11g时,char和nchar数据类型之间有什么区别?,oracle11g,Oracle11g,我使用unicode字符集选项安装Oracle11g。我发现我可以在CHAR数据类型列中插入unicode字符。所以我的问题是: 在安装带有unicode选项的oracle 11g时,CHAR和NCHAR数据类型之间有什么区别?有两个主要区别 长度语义的默认值。默认情况下 CHAR(30)!=NCHAR(30)但是CHAR(30 CHAR)=NCHAR(30) 默认长度语义(由NLS_length_SEMANTICS参数指定)用于CHAR,但不用于NCHAR。此参数的默认值为字节。NCHAR的长

我使用unicode字符集选项安装Oracle11g。我发现我可以在CHAR数据类型列中插入unicode字符。所以我的问题是:
在安装带有unicode选项的oracle 11g时,CHAR和NCHAR数据类型之间有什么区别?

有两个主要区别

  • 长度语义的默认值。默认情况下

    CHAR(30)!=NCHAR(30)
    但是
    CHAR(30 CHAR)=NCHAR(30)

    默认长度语义(由NLS_length_SEMANTICS参数指定)用于CHAR,但不用于NCHAR。此参数的默认值为字节。NCHAR的长度始终以字符为单位。这一点很重要,因为NCHAR(30)将始终包含30个unicode字符,CHAR(30 CHAR)也是如此,但CHAR(30)默认情况下仅包含30个字节,可能等于也可能不等于30个unicode字符

  • AL32UTF8(数据库字符集unicode默认值)和AL16UTF8(NLS\u NCHAR\u字符集默认值)不等效。这两种字符集都是可变长度的unicode字符集,但存储字符的方式不同,因此这两种字符集之间的存储要求不同,前者每个字符使用1、2、3个字节,有时使用4个字节,而后者每个字符使用2个字节,有时使用4个字节)。您的里程数将因存储的字符而异

    此外,在许多客户端应用程序和一些Oracle组件中,NCHAR支持受到限制,因此,如果对数据库字符集使用AL32UTF8,Oracle的建议是只使用CHAR,而不使用NCHAR


  • 任何意见将不胜感激!!!没有
    AL16UTF8
    ,有
    AL16UTF16
    或提到的
    AL32UTF8
    。还有
    UTF8
    ,它与
    AL32UTF8
    稍有不同
    AL16UTF16
    与它们完全不同。