Хората използват различни трикове, за да направят това. Търсих в Google и открих, че някои резултати следват различни трикове. Разгледайте ги:
- Алфа-цифрово сортиране в MySQL
- Естествено сортиране в MySQL
- Сортиране на числови стойности, смесени с буквено-цифрови стойности
- mySQL естествено сортиране
- Естествено сортиране в MySQL
Редактиране:
Току-що добавих кода на всяка връзка за бъдещи посетители.
Алфа-цифрово сортиране в MySQL
Даден вход
1A 1a 10A 9B 21C 1C 1D
Очакван изход
1A 1C 1D 1a 9B 10A 21C
Запитване
Bin Way
===================================
SELECT
tbl_column,
BIN(tbl_column) AS binray_not_needed_column
FROM db_table
ORDER BY binray_not_needed_column ASC , tbl_column ASC
-----------------------
Cast Way
===================================
SELECT
tbl_column,
CAST(tbl_column as SIGNED) AS casted_column
FROM db_table
ORDER BY casted_column ASC , tbl_column ASC
Даден вход
Table: sorting_test -------------------------- ------------- | alphanumeric VARCHAR(75) | integer INT | -------------------------- ------------- | test1 | 1 | | test12 | 2 | | test13 | 3 | | test2 | 4 | | test3 | 5 | -------------------------- -------------
Очакван изход
-------------------------- -------------
| alphanumeric VARCHAR(75) | integer INT |
-------------------------- -------------
| test1 | 1 |
| test2 | 4 |
| test3 | 5 |
| test12 | 2 |
| test13 | 3 |
-------------------------- -------------
Запитване
SELECT alphanumeric, integer
FROM sorting_test
ORDER BY LENGTH(alphanumeric), alphanumeric
Сортиране на числови стойности, смесени с буквено-цифрови стойности
Даден вход
2a, 12, 5b, 5a, 10, 11, 1, 4b
Очакван изход
1, 2a, 4b, 5a, 5b, 10, 11, 12
Запитване
SELECT version
FROM version_sorting
ORDER BY CAST(version AS UNSIGNED), version;
Надявам се това да помогне