字符数据类型 NCHAR 和 NVARCHAR 可支持在某些数据库语言环境中次序的本地化顺序。在以 NLSCASE INSENSITIVE 属性创建的数据库中,NCHAR 和 NVARCHAR 列(以及强制转型到这些数据类型的字符串值)可支持区分大小写的查询。
字符数据类型 CHAR、LVARCHAR 和 VARCHAR 支持数据的代码集顺序次序。这是在 DB_LOCALE 环境变量指定的数据库语言环境的代码集内,在其中定义字符的顺序。缺省的(U.S. English)语言环境是为了排序 CHAR、LVARCHAR 和 VARCHAR 字符串值而使用次序的代码集顺序的语言环境的一个示例。
要获取关于 DB_LOCALE、CLIENT_LOCALE 和 SERVER_LOCALE 环境变量的设置(或缺省值)确定为次序使用哪一语言环境的方式的信息,请参阅 GBase 8s GLS 用户指南。
然而,有些语言环境指定不同于代码集顺序的一个次序的顺序。要支持任何次序的特定于语言环境的顺序,您可使用 NCHAR 和 NVARCHAR 数据类型。NCHAR 数据类型是支持本地化次序的固定长度字符数据类型。NVARCHAR 数据类型是可存储最多 255 字节的文本数据的可变长度字符数据类型,且支持本地化次序。在代码集未定义次序的本地化顺序的语言环境中,比如缺省的语言环境,在 CHAR 与 NCHAR 数据类型之间没有差异,在 VARCHAR 与 NVARCHAR 数据类型之间也没有差异,除了在区分大小写的数据库中之外。
在以 NLSCASE INSENSITIVE 属性创建的数据库中,存储这些数据类型的值恰如将它们加载到数据库内,但在数据处理操作中,包括 NVARCHAR 和 NCHAR 字符串的比较和对照,数据库服务器不理会字母大小写,不考虑大小写对数据值排序。例如,在有次序的列表中,NCHAR 或 NVARCHAR 字符串 "PH" 可能在 "pH" 或 "ph" 之前也可能在之后,在其中将这三个字符串视作重复,依赖于检索这些值的顺序。要获取更多关于在区分大小写的数据库中 NCHAR 或 NVARCHAR 数据处理的信息,请参阅 指定 NLSCASE 区分大小写、在 NLSCASE INSENSITIVE 数据库中重复的行 和 在区分大小写的数据库中的 NCHAR 和 NVARCHAR 表达式。
对于 NCHAR 或 NVARCHAR 值,SQL 的 SET COLLATION 语句可通过指定另一语言环境来覆盖当前会话的本地化的次序顺序。根据当创建索引时生效了的本地化的次序顺序,对 NCHAR 或 NVARCHAR 列上的索引值排序,如果其不同于当前的次序顺序的话。要获取更多关于 SET COLLATION 语句可影响索引、约束、游标、准备好的对象和 SPL 例程的排序行为的方式的信息,请参阅 由数据库对象执行的对照。
如果您在声明 VARCHAR 或 NVARCHAR 列的 CREATE TABLE 或 ALTER TABLE 语句中未指定参数,则新列的缺省的 max 大小为 1 字节,且 reserve 大小为零。