sql >> Databasteknik >  >> RDS >> Mysql

Numerisk ordning vid returnering av resultat från MySQL

Detta är ett problem med din databasdesign. Ämnesnumret ska lagras som ett heltal. Om du inte kan ändra designen, prova den här frågan istället:

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

Resultat:

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

Testdata:

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


  1. Hur man använder liknande klausul i MySQL 5.0 Statement

  2. JDBC-anslutning till Oracle Clustered

  3. Oracle SQL-fel:ORA-00923:Från nyckelord hittades inte där det förväntades

  4. Kan SQL-injektion förhindras med bara addslashes(sträng)?