Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MYSQL selecione um pedaço de uma string e ordene por esse pedaço


Eu sugiro que você veja as Funções de string do MySQL e mais especificamente o SUBSTRING_INDEX função. A razão pela qual eu sugiro este sobre SUBSTRING é porque o número antes ou depois da barra pode ser mais do que um único número que faria o comprimento da primeira e/ou segunda parte variar.

Exemplo:
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;

Resultado:



Exemplo adicional

Neste exemplo, estou usando CAST para converter a segunda parte em um inteiro sem sinal apenas no caso de conter caracteres adicionais, como símbolos ou letras. Em outras palavras, a segunda parte do "web-4/15". seria "15" e a segunda parte de "web-4/15****" também seria "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;