30. januar 2003 - 17:57Der er
11 kommentarer og 1 løsning
ORDER BY felt med tal...
Hvis jeg har: 1, 2, 3, 10, 11 i en MySQL database, og siger ORDER BY felt. Så tager den 1, 10, 11, 2,... - Den tror 10 er 1.0. Ved du hvordan man får den til at lade være med deT?
I så tilfælde har du ikke anden mulighed end at sætte 1 til 01 i stedet så vil den sortere som den skal! Eller også kun at bruge tal og bruge int som type!
Lidt sent, men til evt. senere læsere kan en simpel løsning være, at sætte et mellemrum før de éncifrede tal - så vil det fungere! (Det er noget scriptet skal gøre automatisk inden tallene sættes i DB'en. Man kan også gøre det manuelt, men det er jo lidt B-agtigt, at skulle huske på det.)
Det virker nemlig, fordi så sorteres der således, at " " (ingenting) er mindre "1" - derfor kommer " 8" (ingenting + "8") før "10".
Hov, JO, sørme er det da så! Men bare ikke særligt let-forståeligt åbenbart. :) (Ved en hurtig gennemlæsning tolkede jeg det som en henvisning til et fx matematisk princip, og ikke en guideline til hvordan man kunne komme ud over problemet. Og fandt derfor "samme løsning" andetsteds.) ;-)
Hehe... Nej, men det var også en temmelig komprimeret problem-definition. Så må man komprimere sit svar en anelse! ;-)
Den eneste rigtige løsning er naturligvis at ændre datatypen for det pågældende felt, men den går åbenbart ikke i dette tilfælde...
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.