Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL 'Order By' - poprawne sortowanie znaków alfanumerycznych

Ludzie używają do tego różnych sztuczek. Poszukałem w Google i znalazłem wyniki, z których każdy korzysta z różnych sztuczek. Spójrz na nie:

Edycja:

Właśnie dodałem kod każdego linku dla przyszłych odwiedzających.

Sortowanie alfanumeryczne w MySQL

Podane dane wejściowe

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

Oczekiwany wynik

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

Zapytanie

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

Naturalne sortowanie w MySQL

Podane dane wejściowe

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

Oczekiwany wynik

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

Zapytanie

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

Sortowanie wartości numerycznych zmieszanych z wartości alfanumeryczne

Podane dane wejściowe

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

Oczekiwany wynik

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

Zapytanie

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

Mam nadzieję, że to pomoże



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. INSERT IGNORE vs INSERT ... NA ZDUPLIKOWANY KLUCZ AKTUALIZACJI

  2. Funkcja MySQL LN() — zwraca logarytm naturalny liczby

  3. Jak używać niepodpisanych typów int/long z Entity Framework?

  4. Jak usunąć z wielu tabel w MySQL?

  5. Odmowa dostępu Java JDBC dla użytkownika