Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

SQLITE order by numeric and not alphabetic

When I order my database SQLITE by Classement I have this :

Classement | Nom
1          | clem
10         | caro
11         | flo
12         | raph
2          | prisc
3          | karim
4          | prout

I would like to get :

Classement | Nom
1          | clem
2          | prisc
3          | karim
4          | prout
10         | caro
11         | flo
12         | raph

Here is my code :

SELECT t.Classement 
FROM tableau t 
WHERE 1 = (SELECT 1 + COUNT (*) FROM tableau t2 WHERE t2.Classement < t.Classement OR ( t2.Classement == t.Classement AND t2.Nom < t.Nom ))

Can anyone help me ? Thank you!

like image 871
clement pignet Avatar asked Jan 29 '23 12:01

clement pignet


2 Answers

I guess column Classement is not an integer but character. So try this:

SELECT * FROM tableau ORDER BY cast(Classement as integer);
like image 68
johnzarifis Avatar answered Mar 08 '23 22:03

johnzarifis


You get alphabetic order if the values are strings.

To change the table so that all Classement values are numbers, ensure that the column type is not a text type, and use this:

UPDATE tableau SET Classement = CAST(Classement AS NUMBER);
like image 22
CL. Avatar answered Mar 09 '23 00:03

CL.