sql >> Database >  >> RDS >> Sqlserver

SQL-volgorde werkt niet goed

Je slaat ze op als tekst(nvarchar ), daarom krijg je lexografische volgorde . Dat betekent dat elk personage van links naar rechts met elkaar wordt vergeleken. Vandaar 4000 is "hoger" dan 30000 (de laatste nul maakt niet uit aangezien de eerste 4 al hoger is dan de 3).

Dus de juiste manier is om het op te slaan als een numerieke waarde. Dat lijkt echter onmogelijk, aangezien je ook waarden gebruikt zoals 16.000 with 4.1/2"DP . Dan zou ik nog een kolom toevoegen, een voor de numerieke waarde waarop je wilt bestellen en de andere voor de tekstuele weergave.



  1. 'NIET LIKE' in een SQL-query

  2. php mysql full text zoeken meerdere tabellen samengevoegd door id

  3. Hoe sqlparameter doorgeven aan IN()?

  4. nummers opslaan als varchar