我想知道Microsoft SQL Server是否支持基于本地化首选项的排序。我在https://technet.microsoft.com/en-us/library/cc835499(v=sql.110).aspx看到了一个页面,其中列出了如何根据语言规范比较字符串。但是我注意到英语和荷兰语的比较都使用Latin1_General_CI_AS
。
问题出在荷兰,许多人的姓氏都带有tussenvoegsel。因此,我相信De Jong
的姓氏在按升序排序时将在Van Beethoven
之后。
我的理解是Microsoft SQL Server不支持此用例,但我不确定100%。想知道其他人是否有不同的经历。谢谢!
答案 0 :(得分:0)
没有办法告诉SQL Server文本的某些部分应与其他部分区别对待。
SQL Server知道并理解基于基于字符的的排序顺序(排序规则),例如 é
应该按照 e
进行排序。但是绝不能忽略基于单词和/或位置的,例如 Van
。
前缀可以超过1个字,例如“ Van der”和“ Van't”也很常见,that is not all by far。因此,按照某种内置规则“正确”执行此操作将非常复杂。
您唯一的选择是将前缀(“ Tussenvoegsel”)存储在单独的列中。
Wikipedia提到using a separate 'Tussenvoegsel' column is commonly done in The Netherlands-同时提到比利时的荷兰语部分并不经常这样做,因此您甚至需要了解自己的听众。