Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL 'Ordina per' - ordinamento alfanumerico corretto

Le persone usano trucchi diversi per farlo. Ho cercato su Google e ho scoperto che alcuni risultati seguono trucchi diversi. Dai un'occhiata a loro:

Modifica:

Ho appena aggiunto il codice di ogni link per i futuri visitatori.

Ordinamento numerico alfa in MySQL

Input dato

1A 1a 10A 9B 21C 1C 1D

Risultato previsto

1A 1C 1D 1a 9B 10A 21C

Interroga

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

Ordinamento naturale in MySQL

Input dato

Table: sorting_test
 -------------------------- -------------
| alphanumeric VARCHAR(75) | integer INT |
 -------------------------- -------------
| test1                    | 1           |
| test12                   | 2           |
| test13                   | 3           |
| test2                    | 4           |
| test3                    | 5           |
 -------------------------- -------------

Risultato previsto

 -------------------------- -------------
| alphanumeric VARCHAR(75) | integer INT |
 -------------------------- -------------
| test1                    | 1           |
| test2                    | 4           |
| test3                    | 5           |
| test12                   | 2           |
| test13                   | 3           |
 -------------------------- -------------

Interroga

SELECT alphanumeric, integer
       FROM sorting_test
       ORDER BY LENGTH(alphanumeric), alphanumeric  

Ordinamento di valori numerici mescolati con valori alfanumerici

Input dato

2a, 12, 5b, 5a, 10, 11, 1, 4b

Risultato previsto

1, 2a, 4b, 5a, 5b, 10, 11, 12

Interroga

SELECT version
FROM version_sorting
ORDER BY CAST(version AS UNSIGNED), version;

Spero che questo aiuti