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

MySQL 'Bestil efter' - sorterer alfanumerisk korrekt

Folk bruger forskellige tricks til at gøre dette. Jeg Googlede og finder ud af, at nogle resultater følger forskellige tricks. Tag et kig på dem:

Rediger:

Jeg har lige tilføjet koden for hvert link til fremtidige besøgende.

Alfa-numerisk sortering i MySQL

Givet input

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

Forventet output

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

Forespørgsel

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
 

Naturlig sortering i MySQL

Givet input

Tabel:sorting_test -------------------------- --------------| alfanumerisk VARCHAR(75) | heltal INT | -------------------------- --------------------| test1 | 1 || test12 | 2 || test13 | 3 || test2 | 4 || test3 | 5 | -------------------------- --------------------

Forventet output

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

Forespørgsel

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

Sortering af numeriske værdier blandet med alfanumeriske værdier

Givet input

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

Forventet output

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

Forespørgsel

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

Håber dette hjælper



  1. Indstilling af sessionens tidszone med spring jdbc oracle

  2. Søgning efter tekst i Oracle Stored Procedures

  3. Kopier sqlite i Android Studio-aktiver virker ikke

  4. Sådan formateres et tal med komma i Oracle