sql >> Database >  >> RDS >> Mysql

Numerieke volgorde bij het retourneren van resultaten uit MySQL

Dit is een probleem met uw database-ontwerp. Het onderwerpnummer moet worden opgeslagen als een geheel getal. Als je het ontwerp niet kunt wijzigen, probeer dan deze zoekopdracht:

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

Resultaat:

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

Testgegevens:

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. Kan iemand deze SQL uitleggen? (en hoe kan ik het 'parametriseren' en aanroepen als een functie?)

  2. een-op-veel-relatiet met databasebeperking en inverse=true

  3. Records met een nulwaarde toevoegen aan een query met behulp van cumulatieve analytische functies

  4. Hoe wijzig ik het datumformaat in Postgres?