Avatar billede sjh Nybegynder
25. august 2005 - 00:45 Der er 11 kommentarer og
1 løsning

order by nummer som er varchar

Jeg vil godt ha sorteret et varchar feldt som om det var nummer
altså sådan at det bliver 1,2,3,4,5,6,7,8,9,10,11,a1,a2,a3 osv..

Hvordan kan man gøre det
Avatar billede bromer Nybegynder
25. august 2005 - 00:48 #1
ORDER BY <columnname> ?
Avatar billede sjh Nybegynder
25. august 2005 - 00:49 #2
ja, det kunne jeg også selv.. men så bliver det jo 1,10,11,2,3,4,5,6,7..
Avatar billede bromer Nybegynder
25. august 2005 - 00:53 #3
ahh.. det havde jeg lidt glemt... min fejl.. jeg er træt..
Avatar billede simonvalter Praktikant
25. august 2005 - 01:36 #4
SELECT * from test order by IF (test< ':', LPAD(test,10,'0'), CONCAT('1',test))
1,2,4,10,17,21,22,111135,11111111111111111111,a,a1,a2,b2


SELECT * FROM test order by HEX(test)+0;
1,2,4,a,10,17,21,22,a1,a2,b2,111135,11111111111111111111


SELECT * FROM `test` WHERE 1 order by test+0
a,a1,a2,b2,1,2,4,10,17,21,22,111135,11111111111111111111
Avatar billede simonvalter Praktikant
25. august 2005 - 01:42 #5
hov den sidste var forkert men det er jo nok den første du leder efter ik?
SELECT * FROM `test` WHERE 1 order by test+0,test
a,a1,a2,abc,b2,1,2,4,10,17,21,22,111135,11111111111111111111
Avatar billede sjh Nybegynder
25. august 2005 - 02:31 #6
Ja, den første er der næsten..
må ikke komme sådan: a1,a10,a11,a12..a2,a20,a21.. osv..

skal komme sådan: a1,a2,a3,a4..a20,a21,a22.. osv..
Avatar billede sjh Nybegynder
25. august 2005 - 02:51 #7
den med HEX(test)+0 er faktis som den skal skulle bare have tal først
1,2,3,4,5..a1,a2,a3.. og ikke a1,a2,a3..1,2,3,4,5..
Avatar billede simonvalter Praktikant
25. august 2005 - 07:01 #8
SELECT test
FROM test
ORDER BY
IF (
INSTR( test,  'c' ) =1,
REPLACE (
test,
'c',
'3'
),
NULL
) +0,

IF (
INSTR( test,  'b' ) =1,

REPLACE (
test,
'b',
'2'
),
NULL
) +0,

IF (
INSTR( test,  'a' ) =1,

REPLACE (
test,
'a',
'1'
),
NULL
) +0,

IF (
test <  ':',
CONCAT(  '0', test ) ,
NULL
) +0


Hvis de Ikke kan gøre det så kig på
http://dev.mysql.com/doc/mysql/en/control-flow-functions.html
http://dev.mysql.com/doc/mysql/en/string-functions.html
Jeg har ikke så meget styr på det og uden at vide precis hvilke data og hvilken rækkefølge de skal være i så er det ikke så nemt. Det er måske mere en opgave til php eller hvad du nu koder i.
Avatar billede nielle Nybegynder
25. august 2005 - 07:14 #9
Hvorfor laver du det ikke simpelthen om til et talfelt? Hvis det indeholder tal - og kun tal - så er dette den rigtige vej frem.
Avatar billede sjh Nybegynder
25. august 2005 - 23:15 #10
nielle > ja det er rigtigt at gøre det med et talfelt.. har jeg også lavet det med nu..

Skulle bare være sikker på at det ikke kunne gøres med et textfelt.. før jeg begyndte at forslå andet.. men de har accepteret det med talfelt..

Jeg takker mange gange for jeres hjælp, håber det er ok at det kun er simonvalter der får point.
Avatar billede nielle Nybegynder
26. august 2005 - 07:56 #11
Fint nok med mig. :^)

Hvis man vælger den rigtige felt-type fra starten af, så vil man altid stå bedre end hvis man bagefter skal forsøge sig med diverse krumsping for at få tingene til at opføre sig korrekt. Alt for mange vælger bare "tekst" (eller varchar) uden at spekulere på hvad de andre datatyper er der for.
Avatar billede sjh Nybegynder
26. august 2005 - 22:43 #12
Ja det er jo det :D men problemet var mere at der skulle stå bogstaver i det felt.. så var jeg sikker på at det var et Tekst felt jeg skulle bruge.. men så kunne det bare ikke sorteres som det skulle.. har nu lave to felter et med Text (VarChar) og et med Nummer (Int).. det to felter køre så samme så opdeler jeg bogstaver og tal når der Postes.. og samler dem igen når det Vises.. det er den måde jeg fik lavet det til..

man kan så sige at det var lidt godt at bogstavet stot først og talet bagefter.. at det ikke var a2b3, b5c7.. :D
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester