/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
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



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408925
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste