14. december 2005 - 22:39Der er
9 kommentarer og 1 løsning
Select-query: Find f.eks. A-K, K-Z
Jeg har en database med et VARCHAR(25)-felt, som vi kan kalde for OVERSKRIFT. Den indeholder forskellige overskrifter. Der er (desværre) ikke krav om nogen case på det første bogstav.
Det jeg har brug for er en SELECT-query, der finder alle de poster, hvor OVERSKRIFT's første bog ligger mellem f.eks. A-K. Den skulle gerne være case-insensitive, så store og små bogstaver bliver sorteret sammen...
Det kunne bare være mega cool! På forhånd tak for hjælpen!
Prøv at kig på de 2 kommandoer der hedder BETWEEN og LIKE de skulle kunne gøre tricket med at få alt mellem 2 bogstaver. Hvis du derefter laver en ORDER BY, skulle jeg mene at den pr. default giver dig først alle med stort A og derefter lille a stort B og lille b. Håber det var en lille hjælp
"SELECT * FROM tabelNavn WHERE foo BETWEEN 'LIKE 'a%'' AND 'LIKE 'k%'' ORDER BY foo";
Du må ikke hænge mig på om der skal sættes nogle {} eller andet omkring LIKE 'a%', før det kommer til at fungere men BETWEEN funger ved BETWEEN 'A' AND 'B' og LIKE ved LIKE'foo%' hvor % virker som joker så hvis du vil have alt der starter med A skriv A%, hvis du vil have alt der neder på en skriv LIKE '%en'
Nu hvor jeg sidder og tænker over det kan det måske være at du kan slippe for at bruge like. Hvis der ikke er en anden som svare må du desværre prøve dig lidt frem.
Det var lidt en blanding af jeres begges forslag, men nu kom jeg til at give alle points til pgroen. Jeg ville også godt give lidt til master_orion. Kan jeg det?
Jeg har fundet ud af, at der er et lidt kristisk problem ved følgende WHERE foo BETWEEN 'a%' AND 'k%'
Den henter alle poster der starter med A og til og med dem der starter med J, og ikke som man skulle tror af A-K. Dette kan jeg sådan set godt håndtere, spørgsmålet er bare hvordan den så ser ud, når man vil hente alt fra O-Å, som så kun vil gå til Æ.
Nogen der har en klog løsning på dette? (Jeg bruger en MySQL-database)
Det er fordi den ikke opfatter '%' som wildcard i denne sammenhæng - dvs 'kat' er større end 'k%', og kommer derfor ikke med.
og derfor virker det bedre med substr-løsningen, som skitseret ovenfor... (aner ikke om det hedder 'substr' i MySQL, men ellers er der garanteret en tilsvarende funktion)
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.