|
1
10
这是 documented here .
Windows排序规则(例如
这会导致在两个字符之间对连字符进行不同的处理。 |
|
|
2
7
对于gbn的答案,您可以使用c中的compareOptions.StringSort(或使用StringComparison.Ordinal)使它们的行为相同。这将符号视为出现在字母数字符号之前,因此“—”<“0”。 但是,Unicode和ASCII并不能解释任何问题,因为ASCII代码页的十六进制代码是逐字翻译成Unicode代码页:“-”是002D(45),而“0”是0030(48)。 现在的情况是.NET默认使用“语言”排序,这是基于指定或当前文化对各种符号应用的非顺序排序和权重。例如,这种语言算法允许“r_)sum_”(用重音符号拼写)在排序的单词列表中紧跟“resume”(不用重音符号拼写)出现,因为“_”)在“e”之后和“f”之前被赋予一个分数顺序。它还允许将“合作”和“合作”紧密地放在一起,因为短划线符号的“权重”较低;它仅在对“位”、“位”和“位移位”(将按该顺序出现)等词进行排序时起到绝对最终的分界符的作用。 所谓的顺序排序(严格按照Unicode值,有或没有大小写不敏感)将产生非常不同的有时不合逻辑的结果,因为在ASCII/Unicode顺序中,字母的变体通常出现在基本的未修饰拉丁字母之后,而符号出现在重新考虑。例如,“”在“z”之后,因此“resume”、“rosin”、“ruble”、“rsum”等词将按该顺序排序。位的“,”位移位“,”位的“,”位的“,”位”将按以下顺序排序:第一个是撇号,后面是破折号,然后是字母“e”,然后是字母“s”。从“自然语言”的角度来看,这两种说法都不合乎逻辑。 |
|
|
3
3
utf-xx(c)与ucs-2(sql-server)的细微之处相当棘手。 编辑: 我贴得太早了 我在SQL Server 2008上得到“大于”,排序规则为Latin1_General_Ci_as 编辑2:
我也会尝试
编辑3:参见马丁·史密斯的回答:这两个排序规则有不同的排序顺序。 |
|
|
4
0
关于为什么会发生这种情况,已经有几个很好的答案了,但我确信其他人只是想知道C代码,以便按照与SQL Server相同的顺序迭代集合。我发现以下方法最有效。”序数“解决了连字符问题,而”ignorecase“似乎也反映了SQL Server的默认值。
|
|
|
Johnny T · 基于当前值的SQL合并表[重复] 11 月前 |
|
John D · 需要为NULL或NOT NULL的WHERE子句 12 月前 |
|
ojek · 如何对SQL结果进行分组和编号? 12 月前 |
|
|
senek · 如何在PL/SQL中将选择结果(列)放入数组中 12 月前 |
|
|
Sax · 规范化Google表格(第一步) 12 月前 |
|
|
BarıŠUÅaklı · 如何在ON冲突更新中使用CTE中的值 12 月前 |
|
|
Jatin · 检索卷计数的动态sql抛出错误语法错误[关闭] 1 年前 |
|
|
Andrus · 如何在sql中查找第二个匹配项 1 年前 |