Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MYSQL wählt ein Stück einer Zeichenfolge aus und sortiert nach diesem Stück

Ich würde vorschlagen, dass Sie sich die MySQL String Functions und genauer der SUBSTRING_INDEX Funktion. Der Grund, warum ich diesen über SUBSTRING vorschlage liegt daran, dass die Zahl vor oder nach dem Schrägstrich möglicherweise mehr als eine einzelne Zahl ist, wodurch die Länge des ersten und/oder zweiten Teils variieren würde.

Beispiel:

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;

Ergebnis:

Zusätzliches Beispiel

In diesem Beispiel verwende ich CAST um den zweiten Teil in eine vorzeichenlose Ganzzahl umzuwandeln, nur für den Fall, dass er zusätzliche Zeichen wie Symbole oder Buchstaben enthält. Also der zweite Teil von „web-4/15“. wäre "15" und der zweite Teil von "web-4/15****" wäre auch "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;