Mysql
 sql >> Base de données >  >> RDS >> Mysql

MYSQL sélectionne un morceau d'une chaîne et commande par ce morceau

Je vous suggère de regarder les MySQL String Functions et plus spécifiquement le SUBSTRING_INDEX une fonction. La raison pour laquelle je suggère celui-ci sur SUBSTRING est parce que le nombre avant ou après la barre oblique peut être plus d'un nombre unique, ce qui ferait varier la longueur des première et/ou deuxième parties.

Exemple :

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;

Résultat :

Exemple supplémentaire

Dans cet exemple, j'utilise CAST pour convertir la deuxième partie en un entier non signé au cas où elle contiendrait des caractères supplémentaires tels que des symboles ou des lettres. En d'autres termes, la deuxième partie de "web-4/15". serait "15" et la deuxième partie de "web-4/15****" serait également "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;