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

MySQL seleziona un pezzo di una stringa e ordina per quel pezzo

Suggerirei di guardare le Funzioni di stringa MySQL e più in particolare il SUBSTRING_INDEX funzione. Il motivo per cui suggerisco questo su SUBSTRING è perché il numero prima o dopo la barra potrebbe essere più di un singolo numero che farebbe variare la lunghezza della prima e/o della seconda parte.

Esempio:

SELECT   `info`,
         SUBSTRING_INDEX(`info`, '/', 1) AS `first_part`,
         SUBSTRING_INDEX(`info`, '/', -1) AS `second_part`
FROM     `table`
ORDER BY `first_part` ASC,
         `second_part` ASC;

Risultato:

Esempio aggiuntivo

In questo esempio, sto usando CAST per convertire la seconda parte in un intero senza segno nel caso in cui contenga caratteri aggiuntivi come simboli o lettere. In altre parole, la seconda parte di "web-4/15". sarebbe "15" e anche la seconda parte di "web-4/15****" sarebbe "15".

SELECT   `info`,
          SUBSTRING_INDEX(`info`, '/', 1) AS `first_part`,
          CAST(SUBSTRING_INDEX(`info`, '/', -1) AS UNSIGNED) `second_part`
FROM     `table`
ORDER BY `first_part` ASC,
         `second_part` ASC;