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

Ordem numérica ao retornar resultados do MySQL


Este é um problema com o design do banco de dados. O número do tópico deve ser armazenado como um número inteiro. Se você não puder alterar o design, tente esta consulta:
SELECT title
FROM table1
ORDER BY CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(title, ' ', 2), ' ', -1)
              AS UNSIGNED);

Resultado:


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

Dados de teste:
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');