我是Microsoft SQL Server 2005/2008中的Unicode新手。我将我的数据库转换为使用NVarChar()而不是VarChar()。我惊讶地发现排序与VarChar()不同。我在StackOverflow上找到了另一个参考,对于SQL Sorting and hyphens来说,解释Unicode排序是在“单词”的基础上完成的。经过更多的研究,我找到了Unicode Consortium网站(www.unicode.org),特别是Unicode文本分割(www.unicode.org/reports/tr29)网站,讨论了这一点,它确实提到了连字符作为特例。 (抱歉,作为新用户,我无法发布这些超链接)。
但是我想要定义的正是这些规则对于不同的排序规则,特别是对于美国英语排序规则。还有哪些特殊情况?例如,连字符是唯一被忽略的字符吗?或者其他标点符号,如撇号?
非常感谢任何链接或指示。
答案 0 :(得分:1)
不要使用SQL排序规则;使用Windows。这在the KB article.
中提到来自“Windows Collation Sorting Styles”:
对于Windows排序规则,nchar, nvarchar和ntext Unicode数据类型 具有相同的排序行为 char,varchar和text非Unicode 数据类型。
但是,您还应该考虑为什么要使用unicode。除了排序问题之外,它还较慢:varchar vs nvarchar performance和even MS agreee