【发布时间】:2019-01-26 22:14:14
【问题描述】:
我想知道 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% 确定。想知道其他人是否有不同的经历。谢谢!
【问题讨论】:
-
澄清一下,您希望它在升序排序时出现在之后?即使区分大小写I would expect the opposite。
-
在荷兰语中,姓氏前缀 (de, van, ...) 的排序优先级低于 Jong、Beethoven 等。Marc,您是在问 SQL 是否知道这些差异?我认为答案是否定的。 Sterker nog,我认为如果您的数据库具有来自混合背景的名称,这是不可能的。您如何对毕加索的全名“Pablo Diego José Francisco de Paula Juan Nepomuceno Maríade los Remedios Cipriano de la Santísima Trinidad Ruiz y Picasso”进行排序?
-
我猜按排序偏好,人们会期望 De 和 Van 被完全忽略……这会更有意义,@user1443098 所阐述的观点很重要。它类似于规范化名称,尽管我可以在荷兰语中看到解析或将其分开可能很困难。
-
您好,答案是肯定的,SQL Server 支持本地化排序。似乎您对
linguistic sorting感到困惑,这是完全不同的事情,与alphanumeric sorting的语言不同。荷兰的语言是荷兰语,D 位于 V 之前,因此alphanumeric sorting(简单的“order by”)将根据此。 SQL Server 根据 COLLATE 对alphanumeric进行排序,荷兰语(荷兰)的合适 COLLATE 是 Latin1_General_CI_AS 或 Latin1_General_CS_AS。对于linguistic sorting,您可以使用FUll Text SearchTechnics。 -
@scsimon 是的,我希望“范贝多芬”排在“德容”之前,姓氏前缀的优先级较低。 user1443098 是的,这就是我要问的,是的,它似乎不受支持,我正在四处寻找可能在 SQL 之外实现此功能的库。 scsimon 是的,我希望 De 和 Van 被完全忽略。
标签: sql sql-server sorting localization locale