如何使 SQL Server 2005 对 varchar 列进行排序时与 Java 的操作方式一致

5
我的问题非常简单:我有一个字符串数组。在Java中对它进行排序得到一种顺序,在Sql Server 2005中得到略微不同的顺序。我注意到一个不同之处是在两个字符串的情况下:"jyl; pagespro","jyl",Java按照这个顺序排序,而Sql按照相反的顺序排序。 我尝试使用Sql Server中的ascii(myColumn)进行排序,但仍然没有效果。我该如何解决这个问题?

1
你是否尝试过使用ASC或DESC指定排序顺序,以进行升序或降序排列? - jpw
当然可以,有ASC。而且我需要它。 - Madrugada
1
你能否编辑你的问题,只说明你想让 SQL 按什么顺序对数据进行排序?Java 的方式与你的问题无关。 - JohnFx
如果我理解问题正确的话,他只需要使用 ASCDESC - Yaqub Ahmad
2个回答

4

在DaveE的回答基础上,如果你已经确定了用于排序的排序规则,就可以在ORDER BY子句中使用它的名称,就像这样:ORDER BY colA COLLATE SQL_Latin1_General_Cp437_CS_AS_KI_WI

请注意,这不会使用可能在colA上定义的索引进行排序。您可以通过使用计算列来解决这个问题。

总的来说,我建议在一个地方进行所有排序:要么在Java中,要么在数据库中,而不是有时在这里有时在那里。这只会导致混乱和复杂性。


1
我猜测这与正在使用的 SQL Server 排序规则 有关。这不仅影响可用字符集,还影响字符之间的排序方式。即使在相当通用的 SQL_Latin1_General 系列中,也有数十种特定的排序规则可用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接