23. juni 2009 - 00:09Der 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.
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!
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!
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. :)
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.