22,209
社区成员
发帖
与我相关
我的任务
分享
SELECT ASCII('1') AS [1],ASCII('2') AS [2],ASCII('3') AS [3],ASCII('9') AS [9]
/*
1 2 3 9
49 50 51 57
*/
SELECT * FROM (
SELECT '23' AS t
UNION
SELECT '19' AS t
) A
ORDER BY t
/*
1+9=》49+57=106
2+3=》50+51=101
1+9> 2+3
为何 19 还排在上面?
t
19
23
*/
数字也不行。
感觉楼主这个问题很意思。SELECT * FROM (
SELECT 'azzzzzzzzzzzz' AS t
UNION
SELECT 'baaaaaaa' AS t
) A
ORDER BY t
像这样不管a后面是什么,az始终在前面的SELECT ASCII('-') AS [-],ASCII('1') AS [1]
/*
- 1
45 49
*/
SELECT * FROM (
SELECT '-' AS t
UNION
SELECT '1' AS t
) A
ORDER BY t
/*
-: 45, 1: 49 , 所以 - 在前 1 在后
-
1
*/
SELECT * FROM (
SELECT '-11' AS t
UNION
SELECT '11' AS t
) A
ORDER BY t
/*
45 + 49 + 49 > 49 + 49 , 所以 -11 在后
11
-11
*/
SELECT * FROM (
SELECT '-11' AS t
UNION
SELECT '111' AS t
) A
ORDER BY t
/*
45 + 49 + 49 < 49 + 49 + 49
-11
111
*/
SELECT ASCII('a') AS [a],ASCII('b') AS [b],ASCII('c') AS [c],ASCII('z') AS [z]
/*
a b c z
97 98 99 122
*/
SELECT * FROM (
SELECT 'az' AS t
UNION
SELECT 'bc' AS t
) A
ORDER BY t
/*
a+z > b+c , 为何 az 还是排到上面了?
az
bc
*/