我有一个varchar类型的列,它存储了许多不同的数字.比如说有3行:17.95,199.95和139.95.如何将该字段排序为mysql中的数字
Ric*_*iwi 120
最快,最简单?使用* 1
select *
from tbl
order by number_as_char * 1
使用的其他原因* 1是它可以
Mar*_*cks 12
如果需要对包含文本和数字的char列进行排序,则可以执行此操作.
tbl包含:2,10,a,c,d,b,4,3
select * from tbl order by number_as_char * 1 asc, number_as_char asc
预期产量:2,3,4,10,a,b,c,d
如果不按参数添加第二个顺序,则只会对数字进行排序 - 实际上会忽略文本.
这种方法在将文本排序为数字时很有用:
SELECT `my_field` 
FROM `my_table` 
ORDER BY `my_field` + 0;
在http://crodrigues.com/trick-mysql-order-string-as-number/上找到了解决方案。
小智 6
用前导零填充字符串:
ORDER BY LPAD(`column`,<max length of string>,"0")