Människor använder olika knep för att göra detta. Jag googlade och får reda på några resultat som var och en följer olika knep. Ta en titt på dem:
- Alfanumerisk sortering i MySQL
- Naturlig sortering i MySQL
- Sortering av numeriska värden blandade med alfanumeriska värden
- mySQL natural sort
- Naturlig sortering i MySQL
Redigera:
Jag har precis lagt till koden för varje länk för framtida besökare.
Alfanumerisk sortering i MySQL
Given input
1A 1a 10A 9B 21C 1C 1D
Förväntat resultat
1A 1C 1D 1a 9B 10A 21C
Fråga
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
Given input
Table: sorting_test -------------------------- ------------- | alphanumeric VARCHAR(75) | integer INT | -------------------------- ------------- | test1 | 1 | | test12 | 2 | | test13 | 3 | | test2 | 4 | | test3 | 5 | -------------------------- -------------
Förväntad utdata
-------------------------- -------------
| alphanumeric VARCHAR(75) | integer INT |
-------------------------- -------------
| test1 | 1 |
| test2 | 4 |
| test3 | 5 |
| test12 | 2 |
| test13 | 3 |
-------------------------- -------------
Fråga
SELECT alphanumeric, integer
FROM sorting_test
ORDER BY LENGTH(alphanumeric), alphanumeric
Sortering av numeriska värden blandat med alfanumeriska värden
Given input
2a, 12, 5b, 5a, 10, 11, 1, 4b
Förväntad utdata
1, 2a, 4b, 5a, 5b, 10, 11, 12
Fråga
SELECT version
FROM version_sorting
ORDER BY CAST(version AS UNSIGNED), version;
Hoppas detta hjälper