我在对 MySQL 数据库的查询结果进行 SQL 排序时遇到问题。我需要一种方法来对混合有字母和多位数的发票号码进行排序。
格式为:${可选前缀}${数字部分}${可选后缀},它们都存储在Varchar(32)中。无法更改数字格式,因为这些值是从多个系统导入的。
我要排序的内容:(未排序)
- IoCustTextNoNumber
- Io-700
- IO39ABC
- IO-137-kk
- IO-037-kk
- 201-ib
- 201
- 38-kk
- 036
- 12
- 11-KE
- IO-37-kk
- 00001342
- IO-36-kk
- 11-KEk
- 13
- 035
- 37-kk
- 200
- Io-701
预期结果:(已排序)
- 11-KE
- 11-KEk
- 12
- 13
- 035
- 036
- 37-kk
- 38-kk
- 200
- 201
- 201-ib
- 00001342
- IO-36-kk
- IO-037-kk
- IO-37-kk
- IO-137-kk
- Io-700
- Io-701
- IO39ABC
- IoCustTextNoNumber
谁能帮我解决一下吗?
最佳答案
MySQL 不会这么做。您可以使用 PHP 之类的工具构建自定义排序,然后执行 for 循环并将事物分配到某个位置。或者,您可以选择所有以 lo 开头的内容,然后更新所有内容以将 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
}
}
}
关于mysql - 在 MySQL 中订购发票号码和字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12617482/