sql >> Database teknologi >  >> RDS >> Sqlserver

SQL-rækkefølge ved ikke at fungere korrekt

Du gemmer dem som tekst(nvarchar ), det er derfor, du får leksiografisk rækkefølge . Det betyder, at hver karakter sammenlignes med hinanden fra venstre mod højre. Derfor 4000 er "højere" end 30000 (det sidste nul betyder ikke noget, da de første 4 allerede er højere end de 3).

Så den korrekte måde er at gemme det som en numerisk værdi. Det ser dog ud til at være umuligt, da du også bruger værdier som 16.000 with 4.1/2"DP . Så ville jeg tilføje endnu en kolonne, en for den numeriske værdi, du vil sortere efter, og den anden for den tekstlige repræsentation.



  1. Sådan returneres resultatsæt baseret på andre rækker

  2. Hvordan konverteres/støbes varchar til dato?

  3. MySQL ydeevne af unikt varchar felt vs unikt bigint

  4. Mysql2::Fejl:Forkert strengværdi