Mysql
 sql >> Database >  >> RDS >> Mysql

Ordine numerico durante la restituzione dei risultati da MySQL

Questo è un problema con la progettazione del database. Il numero dell'argomento deve essere memorizzato come numero intero. Se non puoi modificare il design, prova invece questa query:

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

Risultato:

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

Dati di prova:

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');