|
| Sortering med Aa Fra : Arne Feldborg |
Dato : 03-12-03 08:51 |
|
Findes der en fiks metode til at sortere et udtræk fra MySql alfabetisk
med Aa (=Å) til sidst istedet for allerførst.?
Altså nogel a' la "select .......... order by navn"
Og med resultatet:
Arne
Bendt
Cecilie
osv.
Ægir
Ødis
Aage
Evt andre tips i den forbindelse.?
Resultatet hentes ind via PHP, hvis det skulle have nogen betydning.
--
mvh, A:\Feldborg
Folketælllinger Hammerum og Bølling herreder, kirkebøger Hammerum herred
http://www.haunstrup.dk/feldborg/genealogi/download/
| |
Troels Arvin (03-12-2003)
| Kommentar Fra : Troels Arvin |
Dato : 03-12-03 09:27 |
|
On Wed, 03 Dec 2003 08:51:16 +0100, Arne Feldborg wrote:
> Findes der en fiks metode til at sortere et udtræk fra MySql alfabetisk
> med Aa (=Å) til sidst istedet for allerførst.?
I følge bogen "SQL Performance Tuning" [1], har MySQL ikke
understøttelse for dansk kollationering[2], men det er muligt, at bogen
allerede er uddateret på dette punkt: Internationalisering synes at være
et af de emner, der (også i praksis) arbejdes hårdt på i MySQL.
Desværre er det svært at bruge MySQL's online-manual her, for den
beskæftiger sig tilsyneladende med MySQL 4.1-situationen, og der er
næppe mange, der kører med v. 4.1 i produktion.
Note 1:
http://www.awprofessional.com/catalog/product.asp?product_id=%7bAE0C41D5-D0F9-4912-9D43-152ABF65C6D0%7d
Findes online på Safari.
Note 2:
Collation har jeg tilladt mig at oversætte til kollationering.
"Kollationering" står i fremmedordbogen, men jeg er ikke sikker på, at
det på dansk giver mening i databasesammenhæng.
--
Greetings from Troels Arvin, Copenhagen, Denmark
| |
Stig Johansen (04-12-2003)
| Kommentar Fra : Stig Johansen |
Dato : 04-12-03 00:12 |
|
Troels Arvin wrote:
> Note 2:
> Collation har jeg tilladt mig at oversætte til kollationering.
> "Kollationering" står i fremmedordbogen, men jeg er ikke sikker på, at
> det på dansk giver mening i databasesammenhæng.
Vi plejer at oversætte 'collating sequence' med 'sorteringsorden'.
--
Med venlig hilsen
Stig Johansen
| |
Jesper Brunholm (03-12-2003)
| Kommentar Fra : Jesper Brunholm |
Dato : 03-12-03 10:20 |
|
Arne Feldborg skrev:
> Findes der en fiks metode til at sortere et udtræk fra MySql alfabetisk
> med Aa (=Å) til sidst istedet for allerførst.?
Tjah - fiks...
Jeg har løst en række sorteringsproblemer med et tips jeg fik fra Jens
Gyldenkærne engang:
SELECT *, REPLACE (`Titel` , 'Aa', 'Å') as sortering
FROM Dokumenter
ORDER BY REPLACE (`Titel` , 'Aa', 'Å')
Altså: sorter efter en replace. Det kan være lidt kringlet, men det er
effektivt!
> Og med resultatet:
> Arne
> Bendt
> Cecilie
> osv.
> Ægir
> Ødis
> Aage
>
> Evt andre tips i den forbindelse.?
>
> Resultatet hentes ind via PHP, hvis det skulle have nogen betydning.
>
>
>
| |
Jesper Brunholm (03-12-2003)
| Kommentar Fra : Jesper Brunholm |
Dato : 03-12-03 10:28 |
|
Arne Feldborg skrev:
> Findes der en fiks metode til at sortere et udtræk fra MySql alfabetisk
> med Aa (=Å) til sidst istedet for allerførst.?
Tjah - fiks...
Jeg har løst en række sorteringsproblemer omkring sortering af danske
tegn æ,ø og å i MySQL med et tips jeg fik fra Jens Gyldenkærne engang:
SELECT *, REPLACE (`Titel` , 'Aa', 'Å') as sortering
FROM Dokumenter
ORDER BY REPLACE (`Titel` , 'Aa', 'Å')
Altså: sorter efter en replace. Det kan være lidt kringlet, men det er
effektivt!
Alternativt kan man lave en regulær sorteringskolonne.
> Resultatet hentes ind via PHP, hvis det skulle have nogen betydning.
Det er muligvis hurtigere at eftersortere i PHP, men det er brøkdele af
et sekund du kan spare.
mvh
Jesper Brunholm
| |
Bjarke Walling Peter~ (03-12-2003)
| Kommentar Fra : Bjarke Walling Peter~ |
Dato : 03-12-03 15:11 |
|
Jesper Brunholm <jesper@brunholm-scharff.dk> skrev:
> Jeg har løst en række sorteringsproblemer omkring sortering af danske
> tegn æ,ø og å i MySQL med et tips jeg fik fra Jens Gyldenkærne engang:
>
> SELECT *, REPLACE (`Titel` , 'Aa', 'Å') as sortering
> FROM Dokumenter
> ORDER BY REPLACE (`Titel` , 'Aa', 'Å')
>
> Altså: sorter efter en replace. Det kan være lidt kringlet, men det er
> effektivt!
Er det ikke også muligt blot at skrive:
SELECT *, REPLACE('Titel', 'Aa', 'Å') AS sortering
FROM dokumenter
ORDER BY sortering
Jeg mener da at ORDER BY er en ting, der bliver udført tilsidst, hvorfor man
godt kan sortere på kolonner man selv beregner (i dette tilfælde:
sortering). Men jeg ved ikke om der er performance-forskel i de to?
Mvh. Bjarke
| |
Arne Feldborg (04-12-2003)
| Kommentar Fra : Arne Feldborg |
Dato : 04-12-03 08:56 |
|
"Bjarke Walling Petersen" <bwp.news@bwp.dk> skrev Wed, 3 Dec 2003
15:10:49 +0100
>Er det ikke også muligt blot at skrive:
>
>SELECT *, REPLACE('Titel', 'Aa', 'Å') AS sortering
>FROM dokumenter
>ORDER BY sortering
>
Jo det er muligt og det virker faktisk.
Næste problem er så at sorteringen giver Å (=Aa) før Ø, hvordan tackler
men det.?
>Jeg mener da at ORDER BY er en ting, der bliver udført tilsidst, hvorfor man
>godt kan sortere på kolonner man selv beregner (i dette tilfælde:
>sortering). Men jeg ved ikke om der er performance-forskel i de to?
>
Skønsmæssigt bemærker jeg ikke nogen forskel, men det er også ret små
datamængder der her er tale om.
--
mvh, A:\Feldborg
Folketælllinger Hammerum og Bølling herreder, kirkebøger Hammerum herred
http://www.haunstrup.dk/feldborg/genealogi/download/
| |
Peter Brodersen (04-12-2003)
| Kommentar Fra : Peter Brodersen |
Dato : 04-12-03 12:16 |
|
On Thu, 04 Dec 2003 08:56:10 +0100, Arne Feldborg
<feldborg@haunstrup.dk> wrote:
>Næste problem er så at sorteringen giver Å (=Aa) før Ø, hvordan tackler
>men det.?
Jeg har helt overordnet sat følgende på én bestemt mysql-server, i
serverens konfigurationsfil, my.cnf:
default-character-set = danish
Jeg mener først, det er i MySQL 4.1, at det er muligt at sætte pr.
tabel- og felt-niveau, omend jeg ikke havde større held med det,
sidste jeg eksperimenterede med MySQL 4.1.
En gotcha er i øvrigt, at man bør genbygge sine indexes, hvis man
skifter tegnsæt, og sorteringen er baseret på et index. Det er dog
ikke tilfældet hos dig, da du sorterer på baggrund af en funktion.
--
- Peter Brodersen
Ugens sprogtip: trafik (og ikke traffik)
| |
Arne Feldborg (05-12-2003)
| Kommentar Fra : Arne Feldborg |
Dato : 05-12-03 09:11 |
|
Peter Brodersen <usenet@ter.dk> skrev Thu, 04 Dec 2003 12:15:54 +0100
>>Næste problem er så at sorteringen giver Å (=Aa) før Ø, hvordan tackler
>>men det.?
>
>Jeg har helt overordnet sat følgende på én bestemt mysql-server, i
>serverens konfigurationsfil, my.cnf:
>
>default-character-set = danish
>
Og så var det problem også løst. Tak for forslaget.
--
mvh, A:\Feldborg
Folketælllinger Hammerum og Bølling herreder, kirkebøger Hammerum herred
http://www.haunstrup.dk/feldborg/genealogi/download/
| |
Jesper Brunholm (04-12-2003)
| Kommentar Fra : Jesper Brunholm |
Dato : 04-12-03 14:10 |
|
Arne Feldborg skrev:
>>SELECT *, REPLACE('Titel', 'Aa', 'Å') AS sortering
>
>>FROM dokumenter
>
>>ORDER BY sortering
> Jo det er muligt og det virker faktisk.
Hmm - jeg sad netop med en case for nylig hvor jeg ikke kunne få det til
at virke, men det må have været en trykfejl, det virker fint hos mig nu
> Næste problem er så at sorteringen giver Å (=Aa) før Ø, hvordan tackler
> men det.?
Jeg plejer faktisk at replace Æ til ZZ1, Ø til ZZ2 og Å til ZZ3, så er
jeg sikker...
> Skønsmæssigt bemærker jeg ikke nogen forskel, men det er også ret små
> datamængder der her er tale om.
Som falder ud til fordel for den virtelle kolonne ikke? Replace koster
så vidt jeg husker en del i udførsel, så bør være en fordel at kunne
nøjes med en gang
mvh
Jesper Brunholm
| |
Arne Feldborg (05-12-2003)
| Kommentar Fra : Arne Feldborg |
Dato : 05-12-03 09:11 |
|
Jesper Brunholm <nospam@brunholm-scharff.dk> skrev 4 Dec 2003 14:09:43
+0100
>> Næste problem er så at sorteringen giver Å (=Aa) før Ø, hvordan tackler
>> men det.?
>
>Jeg plejer faktisk at replace Æ til ZZ1, Ø til ZZ2 og Å til ZZ3, så er
>jeg sikker...
>
Umiddelbart ser det ud til at en kombination af Replace (Aa -> Å) til en
virtuel kolonne og "default-character-set = danish" løser begge mine
problemer
Noget andet er så, at jeg nok på sigt vil overveje at udføre denne
sortering allerede når data lægges ind i basen, eller ihvertfald udvide
tabellen med en sorteringskolonne.
Sagen er nemlig at jeg normalvis udskifter hele datasættet ved en
opdatering. Og så betyder det jo ikke noget om dette tager et par
sekunder mere eller mindre, hvis det til gengæld bliver nemmere /
hurtigere at hente data ud igen.
Men foreløbig virker det som det skal. Og hermed mange tak til alle der
har bidraget med gode råd og forslag.
--
mvh, A:\Feldborg
Folketælllinger Hammerum og Bølling herreder, kirkebøger Hammerum herred
http://www.haunstrup.dk/feldborg/genealogi/download/
| |
Jens Gyldenkærne Cla~ (03-12-2003)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 03-12-03 15:14 |
|
Bjarke Walling Petersen skrev:
> Er det ikke også muligt blot at skrive:
>
> SELECT *, REPLACE('Titel', 'Aa', 'Å') AS sortering
> FROM dokumenter
> ORDER BY sortering
Ikke i alle databasesystemer. Jeg ved ikke om det virker i mySQL,
men det virker ikke i MSSQL og vist nok heller ikke i Access.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html
| |
kim isaksen (03-12-2003)
| Kommentar Fra : kim isaksen |
Dato : 03-12-03 15:44 |
|
"Jens Gyldenkærne Clausen" <jens@gyros.invalid> wrote in message
news:Xns94469AE7ACE66jcdmfdk@gyrosmod.dtext.news.tele.dk...
> Bjarke Walling Petersen skrev:
>
> > Er det ikke også muligt blot at skrive:
> >
> > SELECT *, REPLACE('Titel', 'Aa', 'Å') AS sortering
> > FROM dokumenter
> > ORDER BY sortering
>
> Ikke i alle databasesystemer. Jeg ved ikke om det virker i mySQL,
> men det virker ikke i MSSQL og vist nok heller ikke i Access.
> --
Det virker i mysql og oracle.
mvh Kim Isaksen
| |
|
|