增补字符
nchar 和 nvarchar 数据类型在称作 UCS-2 的编码中将每个字符存储为 16 位的值。1996 年之前的各 Unicode 版本定义的此编码支持范围 U+0000 到 U+FFFF 中的字符。更新版本的 Unicode 在称作“增补字符”的范围 U+10000 到 U+10FFFF 中定义了附加的字符。这些字符在称作 UTF-16 的编码中作为成对的 16 位值(称作“代理对”)存储。所有新的 _100 级排序规则均支持使用增补字符进行语言排序。
如果使用增补字符时,请考虑下列限制:
只有在排序规则版本 90 或更高版本中才可以将增补字符用于排序和比较操作。
因为增补字符存储为两个 16 位值,所以 LEN() 函数为每个包含在参数字符串中的增补字符返回的值为 2。同样,CHARINDEX 和 PATINDEX 不会正确地表示字符串中出现的增补字符。
LEFT、RIGHT、SUBSTRING、STUFF 和 REVERSE 函数可能会将代理对分开,并导致意外的结果。
不支持将增补字符与下划线 (_)、百分比 (%) 和插入符号 (^) 通配符一起使用。
不支持将增补字符用在元数据(如数据库对象的名称)中。
有关与此方案相关的 Transact-SQL 脚本,请参阅能够识别增补字符的字符串操作示例。有关示例的信息,请参阅安装 SQL Server 示例和示例数据库的注意事项。