使用排序顺序进行排序XXX值SQL
问题描述:
比方说,我想排序的列 “数字”使用排序顺序进行排序XXX值SQL
数=
“1,
1.1,
1.1.1,
1.1.2,
1.1.10"
当我做
ORDER BY号码,所产生的排序列是
数=
“1,
1.1,
1.1.1,
1.1.10,
1.1.2”
我才知道,原来列已经被排序,但这只是对于这个例子...为什么.10会在0.2之前出现?
答
(假设数字的列类型是文本)。
因为1.1.10在1.1.2之前按字母顺序排列。
引用wikipedia:按字母顺序放置一组单词或字符串的结果是,以相同字母开头的所有字符串被组合在一起;并且在该分组内,以相同的双字母序列开头的所有单词被分组在一起;等等。因此该系统倾向于最大化相邻单词之间的公共首字母的数量。
答
这是一个黑客,但你可以试试这个:
ORDER BY CAST(PARSENAME(numbers, 3) as int), CAST(PARSENAME(numbers, 2) as int), CAST(PARSENAME(numbers, 1) as int)
(假设数字列类型是文本)。因为1.1.10在1.1.2之前按字母顺序排列。引用*:以字母顺序放置一组单词或字符串的结果是,以相同字母开头的所有字符串被组合在一起;并且在该分组内,以相同的双字母序列开头的所有单词被分组在一起;等等。因此该系统倾向于最大化相邻单词之间的公共首字母的数量。 – 2014-10-17 12:35:53
@ vc74 - 我会张贴作为答案...因为这是所有问题真的问,为什么?不一定如何修复或改变。 – 2014-10-17 12:39:04
@ gloomy.penguin邓! – 2014-10-17 12:40:30