29. august 2003 - 15:33Der er
18 kommentarer og 2 løsninger
Giv mig de rækker, hvis begyndelsesbogstav er Æ, Ø eller Å
Hej, jeg har et simpelt problem som volder mig store kvaler at løse:
Jeg har en tabel, hvor jeg har nogle titler. Jeg vil gerne udtrække de rækker, der starter med forskellige bogstaver.
Det går fint med bogstaverne A-Z - men så heller ikke længere.
Findes der en metode, hvor man kan udtage det første tegn fra et access-felt og spørge på det - uden først at udtage alle rækker og dernæst kassere dem, der ikke skal bruges?
Den metode jeg bruger fungerer således:
SELECT * from post where (titel >=bogstav and titel < chr(asc(bogstav)+1))
det går godt, når man tager udgangspunkt i ansi-tegntabellen (som chr og asc bruger) - MEN det gør jeg ikke; jeg vil nemlig gerne sortere æ, ø og å korrekt så jeg kører med dansk/norsk tegnsæt fra access - og det supporteres ikke af chr og asc.
Æ og Ø kan jeg så klare, idet jeg ved at næste tegn er hhv Ø og Å - men den går ikke med Å.
Helt generelt har jeg nogle kategorier der ser således ud:
"A B" : Skaf mig alle poster startende med A eller B "C D E F" : Skaf mig alle poster med C, D, E eller F osv "S" Skaf mig alt med S "U V W X Z Æ Ø Å" Saf mig alt med bogstav U,V.. osv "Andre" : Skaf mig alle, der ikke starter med et bogstav. (tal eller specieltegn)
Jeg har prøvet flere metoder, men alle giver de op specielt overfor Å.
Er der nogen, der har en idé til hvordan det kan laves i access og/eller kombineret med asp?
fir ( i=1; 28 >= i; i++) { SELECT SUBSTRING('abcdefghijklmnopqrstuvxyzæøå', i, 1) AS c, COUNT(ID) AS num FROM domain WHERE LEFT (name , 1) = SUBSTRING('abcdefghijklmnopqrstuvxyzæøå', i, 1) }
Mugs - din løsning ser pæn ud - men den virker desværre ikke. Nu kan jeg ikke se at du skriver 2 gnyffer eller anførselstegn - begge dele giver syntaksfejl. Ved brug af enkeltgnyf kan det køres - men der findes ingen rækker - og jeg VED at der er en post, der hedder noget med "Ål..."
Mit forslag er afprøvet og fungerer efter hensigten i en Access database. Hvorfor den ikke fungerer hos dig, kan jeg ikke svare på. Måske har du implementeret den i ASP, og det kender jeg intet til.
codebase : det ligner C++, det er også ok. Jeg har dog ikke gode erfaringer med brug af left i sql (jeg har prøvet, og det ville klart være en pæn løsning) - men sql'et ved ikke hvad left er (det er ikke et felt på tabellen).
mugs: ok - så er den lidt tricky - for mine sql'er eksekverer jeg med en Set objRS = myConn.Execute(strSQL) - hvor strSQL er strengen med SQL - og den kan ikke indeholde gåsetegn (betyder jo slut på streng) - men måske en replace kan gøre det - jeg prøver lige...
Jeg er ikke interesseret i pointene. Jeg har intet forstand på hverken C++ eller ASP, så jeg ved dårlig nok hvad jeg taler om her. Men jeg har jo offentliggjort min SQL-sætning , så den kan du jo blot bruge.
Men det var måske også en ide, at flytte spørgsmålet til ASP-kategorien.
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.