Avatar billede larsholmgaard_dk Nybegynder
23. juni 2009 - 00:09 Der er 4 kommentarer og
1 løsning

ORDER BY overser specialtegn - hvorfor?

SELECT * FROM (...) ORDER BY `filename`

Ovenstående uddrag af en simpel query giver mig denne rækkefølge, som jeg ikke er helt tilfreds med:

A
B
-C
D
E
-F
G

ORDER BY ser simpelthen bort fra specialtegnet "-" og sorterer efter førstkommende bogstav. Dette gælder også, hvis jeg fx. sætter en parantes omkring (C) og (F). De bliver placeret på samme position. Hvorfor?

Jeg vil hellere have denne rækkefølge, hvor bindestregen sorteres på lige fod med de andre karakterer og kommer først:

-C
-F
A
B
D
E
G

Pointen er netop at min klient gerne vil kunne lægge nogle entries i en klump for sig, først i sorteringen.

Jeg vil blive meget glad for nogen, der kunne pege mig i en eller anden retning af en løsning.
Avatar billede arne_v Ekspert
23. juni 2009 - 00:12 #1
Den collation du bruger ignorerer vel special tegn - det er så vidt jeg ved korrekt sotering i de fleste sprog.

Prøv at bruge binary collation.
Avatar billede larsholmgaard_dk Nybegynder
23. juni 2009 - 00:17 #2
Aha! Det kunne måske være en løsning - jeg tester lige og vender tilbage. Under alle omstændigheder er jeg MEGET glad og taknemmelig for din hurtige hjælp!
Avatar billede larsholmgaard_dk Nybegynder
23. juni 2009 - 00:27 #3
Argh... det er mig, der har lavet en bøf. Jeg sorterer efter filnavn og ikke titel, som er forskellig. Det er kun i titlen at der står "-" foran teksten, det gør der ikke i filnavnet og derfor bliver den ikke sorteret med. Problem solved. Nogle gange skal man vist hellere sove i stedet for at arbejde. Jeg beklager at have spildt din tid Arne!
Avatar billede larsholmgaard_dk Nybegynder
23. juni 2009 - 00:54 #4
Question withdrawn.
Avatar billede mrgumble Nybegynder
23. juni 2009 - 09:05 #5
En bonus tanke kunne være at udvide med en prioritet eller gruppe-tæller, således at du har noget at sortere efter først, og dernæst filnavn/titel. Dvs. dine rækker hedder:
Title | Group
A | 1
B | 1
C | 0
D | 1
E | 1
F | 0
G | 1

SELECT Title, Group FROM shelf ORDER BY Group, Title (ASC/DESC) og du vil få dit ønskede output. Du skal bare lige tænke over stigende kontra faldende sortering når du kombinerer tekst og tal. :)
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

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