例如,我有这组数据:
+--------------+-----------+
| 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
它仍然显示米奇超过唐纳德。唐纳德应该在哪里。
我想按降序排列,以便唐纳德·米奇·高飞。
答案 0 :(得分:1)
出于各种原因,将钱存储为varchar是一个坏主意-尽可能将其转换为更合适的格式。
否则,这个question有一个答案。
答案 1 :(得分:0)
我建议将“ money”列存储为Decimal
或Double
而不是VARCHAR
。
但是对于您的情况,您可以先按长度顺序降序,然后按货币顺序降序。
以下查询应为您工作。
SELECT name, money FROM worth ORDER BY LENGTH(money) desc, money desc;