Mensen gebruiken hiervoor verschillende trucs. Ik heb gegoogeld en ontdek dat sommige resultaten elk verschillende trucs volgen. Bekijk ze eens:
- Alfanumeriek sorteren in MySQL
- Natuurlijk sorteren in MySQL
- Sorteren van numeriek waarden gemengd met alfanumerieke waarden
- mySQL natuurlijke sortering
- Natuurlijke sortering in MySQL
Bewerken:
Ik heb zojuist de code van elke link toegevoegd voor toekomstige bezoekers.
Alfanumeriek sorteren in MySQL
Gegeven input
1A 1a 10A 9B 21C 1C 1D
Verwachte uitvoer
1A 1C 1D 1a 9B 10A 21C
Zoekopdracht
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
Gegeven input
Table: sorting_test -------------------------- ------------- | alphanumeric VARCHAR(75) | integer INT | -------------------------- ------------- | test1 | 1 | | test12 | 2 | | test13 | 3 | | test2 | 4 | | test3 | 5 | -------------------------- -------------
Verwachte uitvoer
-------------------------- -------------
| alphanumeric VARCHAR(75) | integer INT |
-------------------------- -------------
| test1 | 1 |
| test2 | 4 |
| test3 | 5 |
| test12 | 2 |
| test13 | 3 |
-------------------------- -------------
Zoekopdracht
SELECT alphanumeric, integer
FROM sorting_test
ORDER BY LENGTH(alphanumeric), alphanumeric
Sorteren van numerieke waarden gemengd met alfanumerieke waarden
Gegeven input
2a, 12, 5b, 5a, 10, 11, 1, 4b
Verwachte uitvoer
1, 2a, 4b, 5a, 5b, 10, 11, 12
Zoekopdracht
SELECT version
FROM version_sorting
ORDER BY CAST(version AS UNSIGNED), version;
Ik hoop dat dit helpt