在某些应用程序中,字符串的大小写会被忽略。 例如,数据项处理,可能接受字符串 'M' 和 'm' 在一条记录中是逻辑等价的。对于大数据集,应用条件逻辑将两种情况变量转换为单个值可能 导致性能低于将记录存储在不区分大小写的数据库的 NCHAR 或 NVARCHAR 列中,其中 'M' 和 'm' 字符串编码都是不区分大小写的值此处的条件 'M' MATCHES 'm' 对 NCHAR 或 NVARCHAR 列计算为真。
每个创建有 NLSCASE INSENSITIVE 属性的数据库存储大小写的 NCHAR 和 NVARCHAR 字 母,正如它们被加载到它们的表中一样;查询返回的任何未更改的记录都具有原始字母。然而,在 所有的对 NCHAR 和 NVARCHAR 值的操作(例如:排序、分组或标识重复行)中,数据库服务器 会忽略字母大小写的变化,例如:字符串 'Mi' 和 'mI' 的值是一样的。有关字母大小写的信息 没有被丢弃,但是当数据库服务器处理 NLS 数据类型时仍不会使用这些信息。
当在 CREATE DATABASE 语句中包含 NLSCASE INSENSITIVE 关键字作为其最后的指定时, 数据库服务创建处理以下字符串类型时不考虑字母大小写的数据库:
⚫ 存储在 NLS 数据类型的 NCHAR 和 NVARCHAR 列中字符串
⚫ 存储为基于 NCHAR 或 NVARCHAR 数据类型的 DISTINCT 数据类型的字符串
⚫ 存储为具有集合数据类型的那些数据类型的元素的字符串
⚫ 存储在指定或未指定的 ROW 数据类型中的以上数据类型的字段中字符串
⚫ 存储为 SPL 变量的那些数据类型的字符串
⚫ 隐式或显示强制转型为那些数据类型的字符串
⚫ 作为被函数返回的那些数据类型的输出参数的字符串 此处的 "这些数据类型" 引用了在同一列表中标识的字符数据类型。
此处的 "这些数据类型" 引用了在同一列表中标识的字符数据类型。
以下语句创建了具有 NLSCASE INSENSITIVE 属性的数据库: CREATE DATABASE stores IN dbsp2 WITH BUFFERED LOG NLSCASE INSENSITIVE;