对于具有可配置排序顺序(_Sort 参数)的存储过程,我使用如下代码:
SELECT * FROM distances
ORDER BY
CASE _Sort
WHEN 1 THEN uid
WHEN 2 THEN NULL
WHEN 3 THEN name
WHEN 4 THEN NULL
WHEN 5 THEN distance
WHEN 6 THEN NULL
ELSE distance
END ASC,
CASE _Sort
WHEN 2 THEN uid
WHEN 4 THEN name
WHEN 6 THEN distance
ELSE NULL
END DESC
其中uid
是INT并且distance
是DOUBLE。
但如果 _Sort = 1,则按CHARuid
排序,例如
200
207
25
4
同样的事情distance
。转换为无符号和十进制没有帮助。
ORDER BY uid ASC
做正确的事,即4, 25, 200, 207
任何的想法?