Това е проблем с дизайна на вашата база данни. Номерът на темата трябва да се съхранява като цяло число. Ако не можете да промените дизайна, опитайте вместо това тази заявка:
SELECT title
FROM table1
ORDER BY CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(title, ' ', 2), ' ', -1)
AS UNSIGNED);
Резултат:
'topic 1 foo' 'topic 2 bar' 'topic 10 baz'
Данни от теста:
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');