SQL Server 与 MySQL 的 unicode_ci 排序规则的类似物是啥?
Posted
技术标签:
【中文标题】SQL Server 与 MySQL 的 unicode_ci 排序规则的类似物是啥?【英文标题】:What's SQL Server's analogue of MySQL's unicode_ci collation?SQL Server 与 MySQL 的 unicode_ci 排序规则的类似物是什么? 【发布时间】:2011-06-30 21:28:11 【问题描述】:据我了解,在 mysql unicode_ci(尤其是 utf8_unicode_ci)中,排序规则旨在支持所有字符,无论语言环境如何。
我需要使用 SQL Server 2008 R2 实现相同的功能。我的数据库将包含不同语言的数据(不限于拉丁字母)。我根本不会使用非 Unicode 字符串。我应该选择什么排序规则?
【问题讨论】:
【参考方案1】:你不妨选择 Latin1_General_CI_AI
原因是 unicode 数据使用 NVarchar 字段存储,SQL Server 更灵活,它可以混合 Varchar(1 字节)和 NVarchar(2 字节)数据。因此,为了匹配 UTF8,any 排序规则就可以了。至于 CI - 2008 年的每一个排序规则都允许添加 CI 规范(它是 UI 中“区分大小写”的复选框 - 未选中不敏感)。
最后一点和其他一些像宽度一样只是对 SQL Server 的额外调整。
http://forums.mysql.com/read.php?103,187048,188748 的第 2 点
utf8_unicode_ci 适用于所有这些语言: 俄语、保加利亚语、白俄罗斯语、马其顿语、塞尔维亚语和乌克兰语。
如果您需要对特定语言进行排序,其中语言处理重音的方式不同,您需要特定的字典顺序 - 请参阅此处http://msdn.microsoft.com/en-us/library/ms144250.aspx。否则 Latin1_General 基于 Latin-US
【讨论】:
“您不妨选择 Latin1_General_CI_AS” - 您的意思是在这种情况下,西里尔文文本将与东欧和西欧拉丁文一样正确整理? @ivan 即使是 MySQL utf8_general_ci 也不处理多种语言。如果您需要特定语言的排序,则需要选择特定语言的排序规则。 我需要的所有语言细节是 Б 意味着在西里尔文中的 А(等)之后以及在拉丁文中的 A 之后。没有人知道和关心如何对重音进行排序——ä 在 á 之后或 á 之前。同时西里尔字母应该排在拉丁字母之后,数字应该排在拉丁字母之前。我的数据库将在同一列中包含英语、意大利语、德语、希腊语、土耳其语、匈牙利语、挪威语、芬兰语、俄语、保加利亚语、白俄罗斯语、马其顿语、塞尔维亚语、乌克兰语、波兰语、罗马尼亚语、越南语等的值(有时即使在同一个字符串中)。 应用程序逻辑严重依赖 SQL(SQL Server 不仅用作存储,而且(在存储过程中)比中间件做更多的应用工作),因此服务器端编码和排序规则很重要.以上是关于SQL Server 与 MySQL 的 unicode_ci 排序规则的类似物是啥?的主要内容,如果未能解决你的问题,请参考以下文章