sql >> Databasteknik >  >> RDS >> Mysql

MySQL 'Order By' - sorterar alfanumeriskt korrekt

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:

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

Naturlig sortering i MySQL

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



  1. Hur man ansluter Android till MySQL med Mysql JDBC-drivrutinen

  2. Begränsning för endast en post markerad som standard

  3. SQL Server-exekveringsplan — vad är det och hur hjälper det med prestandaproblem?

  4. Stöder Postgres kapslade eller autonoma transaktioner?