根据
this,sql Server 2K5在内部使用UCS-2.它可以在UCS-2中存储UTF-16数据(具有适当的数据类型,nchar等),但是如果存在补充字符,则将其存储为2个UCS-2字符.
这带来了字符串函数的明显问题,即sql Server将一个字符视为2.
我有点惊讶的是,sql Server基本上只能处理UCS-2,甚至更多,因此sql 2K8中没有修复它.我很欣赏其中一些角色可能并不常见.
除了本文中建议的功能之外,还有关于在sql Server 2K5中处理(损坏的)字符串函数和UTF-16数据的最佳方法的任何建议.
解决方法
sql Server 2012现在支持UTF-16,包括代理对.见
http://msdn.microsoft.com/en-us/library/ms143726(v=sql.110).aspx,特别是“补充字符”部分.
因此,对原始问题的一个修复是采用sql Server 2012.