自然排序无法正确安排数据

时间:2018-08-02 12:55:56

标签: mysql

例如,我有这组数据:

+--------------+-----------+
| Name         | Money     |
+--------------+-----------+
| Mickey Mouse | 1,000,780 |
+--------------+-----------+
| Donald Duck  | 1,580,870 |
+--------------+-----------+
| Goofy        | 230,570   |
+--------------+-----------+

当我使用时:

SELECT name, money FROM worth ORDER BY LENGTH(money), money

它仍然显示高飞超过米奇和唐纳德。

当我使用时:

SELECT name, money FROM worth ORDER BY money +0 ASC

它仍然显示米奇超过唐纳德。唐纳德应该在哪里。

我想按降序排列,以便唐纳德·米奇·高飞。

2 个答案:

答案 0 :(得分:1)

出于各种原因,将钱存储为varchar是一个坏主意-尽可能将其转换为更合适的格式。

否则,这个question有一个答案。

答案 1 :(得分:0)

我建议将“ money”列存储为DecimalDouble而不是VARCHAR。 但是对于您的情况,您可以先按长度顺序降序,然后按货币顺序降序。

以下查询应为您工作。

SELECT name, money FROM worth ORDER BY LENGTH(money) desc, money desc;