Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么';s SQL Server';s与MySQL的类似物';s unicode_ci排序规则?_Sql_Sql Server_Unicode_Collation - Fatal编程技术网

什么';s SQL Server';s与MySQL的类似物';s unicode_ci排序规则?

什么';s SQL Server';s与MySQL的类似物';s unicode_ci排序规则?,sql,sql-server,unicode,collation,Sql,Sql Server,Unicode,Collation,据我所知,在MySQL unicode_ci(尤其是utf8_unicode_ci)中,排序规则意味着支持所有字符,而不考虑语言环境 我需要用SQLServer2008R2实现同样的功能。我的数据库将包含不同语言的数据(不限于拉丁字母)。我根本不打算使用非Unicode字符串。我应该选择什么样的排序规则?你最好选择拉丁语1\u General\u CI\u AI 原因是unicode数据是使用NVarchar字段存储的,SQL Server更灵活,因为它可以混合使用Varchar(1字节)和NV

据我所知,在MySQL unicode_ci(尤其是utf8_unicode_ci)中,排序规则意味着支持所有字符,而不考虑语言环境


我需要用SQLServer2008R2实现同样的功能。我的数据库将包含不同语言的数据(不限于拉丁字母)。我根本不打算使用非Unicode字符串。我应该选择什么样的排序规则?

你最好选择拉丁语1\u General\u CI\u AI

原因是unicode数据是使用NVarchar字段存储的,SQL Server更灵活,因为它可以混合使用Varchar(1字节)和NVarchar(2字节)数据。因此,为了匹配UTF8,任何排序规则都可以。至于CI—2008年的每一个排序规则都允许添加CI规范(它是UI中的一个复选框“区分大小写”-未选中不区分大小写)

最后一位和其他一些(如width)只是SQL Server上的额外调优

第2点从

utf8\u unicode\u ci适用于所有这些语言: 俄罗斯人、保加利亚人、白俄罗斯人、马其顿人、塞尔维亚人和乌克兰人


如果您需要对特定语言进行排序,其中语言处理重音的方式不同,则需要特定的字典顺序-请参阅此处。否则Latin1_General是基于拉丁美洲的

“你最好选择Latin1_General_CI_as”-你的意思是,在这种情况下,西里尔语文本将与东欧和西欧拉丁语一样正确地进行校对吗?@ivan即使是MySQL utf8_General_CI也不能处理多种语言。如果您需要特定于语言的排序,您需要选择特定于语言的排序规则。我需要的所有特定于语言的规则是,在西里尔语中,Б在a(等)之后,在拉丁语中,则在a之后。没有人知道,也没有人关心口音是如何分类的——在发音之后还是之前。同时,西里尔字母应该排在拉丁字母之后,数字应该排在拉丁字母之前。我的数据库将在同一列中包含英语、意大利语、德语、希腊语、土耳其语、匈牙利语、挪威语、芬兰语、俄语、保加利亚语、白俄罗斯语、马其顿语、塞尔维亚语、乌克兰语、波兰语、罗马尼亚语、越南语等的值(有时甚至在同一个字符串中)。应用程序逻辑严重依赖SQL(SQL Server不仅用作存储,而且(在存储过程中)比中间件做更多的应用程序工作),因此服务器端编码和排序非常重要。