对在mysql中存储为varchar的数字进行排序

时间:2014-11-26 08:15:29

标签: mysql database sorting

我有这个SQL查询:

SELECT * FROM `Fac__Invoice` ORDER BY `Fac__Invoice`.`invoice_number` ASC 

结果是这张表:

enter image description here

问题是数字10在1之后。它应该在9之后。这是因为invoice_number是varchar。我故意选择varchar,因为我想存储数字,例如“FA001”。

你能编写一个sql查询,以便将invoice_number 10放在9下吗? 或者还有其他解决方案吗?

1 个答案:

答案 0 :(得分:1)

尝试将值解析为unsigned:

SELECT * FROM `Fac__Invoice` ORDER BY CAST(`Fac__Invoice`.`invoice_number` AS UNSIGNED) ASC