我在MySQL数据库中对SQL查询结果进行排序时出现问题。我需要一种方法来对与字母和多位数混合的发票号进行排序。
格式为:$ {optional-prefix} $ {number part} $ {optional-postfix},它们都存储在Varchar(32)中。不能更改数字格式,因为值是从多个系统导入的。
我想要排序:(未排序)
预期结果:(已排序)
任何人都可以帮我解决问题吗?
答案 0 :(得分:1)
MySQL不会这样做。您可以在PHP之类的东西中构建自定义排序,然后执行for循环并将事物分配给某个位置。或者,您可以选择以lo开头的所有内容,然后更新所有这些内容以将其放入另一列。
在php中,您可以执行以下操作:
foreach($data => row){
$test = strpos('-', $row); // If this is successful than it has a dash in the string, and it goes towards the front.
if(!$test) { // If its not a test does it begin with a number.
if($row[0] >= 0){
// Do whatever you need
}
}
}