使用SORTORDER对x.x.x值进行排序SQL

时间:2014-10-17 12:31:42

标签: sql sorting

假设我正在尝试对列“数字”进行排序

数字=
“1,
1.1,
1.1.1,
1.1.2,
1.1.10"

当我这样做时

ORDER BY NUMBERS,生成的排序列为

数字=
“1,
1.1,
1.1.1,
1.1.10,
1.1.2"

我知道原始列已经排序,但这仅适用于此示例...为什么.10出现在.2之前?

2 个答案:

答案 0 :(得分:1)

(假设数字的列类型是文本)。

因为1.1.10按字母顺序排在1.1.2之前。

引用wikipedia:按字母顺序放置一组单词或字符串的结果是所有以相同字母开头的字符串被组合在一起;在该分组中,所有以相同的双字母序列开头的单词被分组在一起;等等。因此,该系统倾向于最大化相邻单词之间的共同首字母的数量。

答案 1 :(得分:0)

这是一个黑客,但你可以试试这个:

ORDER BY CAST(PARSENAME(numbers, 3) as int), CAST(PARSENAME(numbers, 2) as int), CAST(PARSENAME(numbers, 1) as int)