在过去,ORACLE 数据库将全球化支持称为国家语言支持(National Language Support, NLS),NLS 实际是全球化支持的一个子集。OceanBase 数据库的 Oralce 模式兼容 ORACLE 数据库,继续沿用这个称呼。 NLS 是使用特定字符集选择国家语言和存储数据的能力,用一序列 NLS 参数实现。
OceanBase 数据库存储数据时使用 UTF8MB4 字符集,可以存储绝大部分语言的字符。但是在本地消息、货币、时间日期等区域化展示方面,OceanBase 数据库当前版本只支持英语。客户端连接环境的 NLS_LANG 设置目前对 OceanBase 数据库连接没有影响。
关于地区支持
OceanBase 数据库当前版本对地区只支持美国英语地区,默认值为 AMERICA 。默认的本地时间格式、日期格式、数字和货币格式都取决于该地区的设置。
OceanBase 数据库当前版本对日期和时间格式只支持美国英语地区的日期和时间格式。默认的日期格式是:DD-MON-RR,默认的时间戳格式是:DD-MON-RR HH.MI.SSXFF AM 或 DD-MON-RR HH.MI.SSXFF AM TZR 。OceanBase 数据库支持通过更改会话参数或者实例参数调整日期和时间格式。
OceanBase 数据库当前版本对日历格式只支持格列高利历(GREGORIAN ,又叫公历)。
关于数值和金额格式
OceanBase 数据库当前版本只支持按 BINARY 比较和排序字符串,不支持修改。
关于长度语义
如果要以字节为单位计算字符串的长度,您需要知道在所使用的字符集中每个字符占多少个字节。
在单字节字符集中,字符串的字节数跟字符数是一致的;在多字节字符集中,一个字符会包含一到多个字节。特别是在变宽字符集中,很难根据字节长度计算字符数。以字节为单位计算列长称为字节语义,而以字符为单位计算列长称为字符语义。
字符语义用于指定不同宽度的多字符串的存储需求。例如,在 Unicode 数据库(AL32UTF8)中,假设您必须有一个 VARCHAR2 列,它可以存储最多五个汉字和五个英文字符。使用字节语义,此列要求汉字 15 个字节(每个汉字字长 3 个字节),英文字符 5 个字节(每个英文字长 1 个字节),共 20 个字节。如果使用字符语义,该列需要 10 个字符。
OceanBase 数据库的 Oracle 模式默认使用字节语义。
在 OceanBase 数据库的 Oracle 模式中,有两种方式存储 Unicode 字符:
可以创建租户时指定字符集为 UTF8,这样您可以在 SQL 的字符类型(CHAR , VARCHAR2 , CLOB 和 LONG)数据中存储 UTF-8 编码的字符。
SQL 国家字符类型包括 NCHAR,NVARCHAR2 和 NCLOB(OceanBase 数据库当前版本还不支持 NCLOB),它们也被称为 Unicode 数据类型,因为仅用于存储 Unicode 数据。
Unicode 数据使用的是国家字符集,在创建实例时指定。OceanBase 数据库支持两种国家字符集:UTF8 或 AL6UTF16(默认)。