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

Numerische Reihenfolge bei der Rückgabe von Ergebnissen aus MySQL

Dies ist ein Problem mit Ihrem Datenbankdesign. Die Themennummer sollte als ganze Zahl gespeichert werden. Wenn Sie das Design nicht ändern können, versuchen Sie es stattdessen mit dieser Abfrage:

SELECT title
FROM table1
ORDER BY CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(title, ' ', 2), ' ', -1)
              AS UNSIGNED);

Ergebnis:

'topic 1 foo'
'topic 2 bar'
'topic 10 baz'

Testdaten:

DROP TABLE IF EXISTS table1;
CREATE TABLE table1 (title VARCHAR(100) NOT NULL);
INSERT INTO table1 (title) VALUES
('topic 1 foo'),
('topic 2 bar'),
('topic 10 baz');