Mange tak for det godt beskrevet svar.
N9
"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev i en meddelelse
news:Xns92C4E445865CBjcdmfdk@gyrosmod.cybercity.dk...
> N9 skrev:
>
> > COLLATE SQL_Latin1_General_CP1_CI_AS det er det jeg ikke helt
> > er med hvad det er.
> > er der nogen som gider og forklar vigtigheden af det
>
> COLLATE betyder (frit oversat) sortere, og
> SQL_Latin1_Geneneral_CP1_CI_AS er navnet på en collation - det vil
> sige en sorteringsrækkefølge.
>
> I MSSQL 2000 kan man definere sorteringsrækkefølger på database-,
> tabel- og feltniveau - så du fx kan have felterne tekst_dk og
> tekst_us med forskellige sortering.
>
> Sorteringsrækkefølgen betyder noget i 2 sammenhænge. Først og
> fremmest bestemmer den selvfølgelig hvilken rækkefølge poster skal
> udskrives i når der benyttes ORDER BY, men derudover bruges
> collation også når to feltværdier skal sammenlignes. Her kan man
> hurtigt få problemer hvis man arbejder med databaser der benytter
> forskellige collations.
> Hvis tabel1 fx benytter SQL_Latin1_General_CP1_CI_AS og tabel2
> benytter Danish_Norwegian_CI_AS så kan SQL-serveren ikke lave et
> join mellem de to tabeller uden at man eksplicit fortæller hvilken
> collation der skal benyttes. Det gøres ved at sætte COLLATE
> <collationnavn> efter udtrykket.
>
> Collations der starter med SQL_ er "gamle" collations der stammer
> fra SQL 7 eller tidligere. De bør kun benyttes hvis har brug for at
> arbejde med data der allerede er i en SQL_-collation og ikke
> umiddelbart kan flyttes. Nyere (SQL 2000) collations hedder fx
> Danish_Norwegian_, Finnish_Swedish_.
>
> De sidste bogstaver, adskilt af _ (understreg) er fælles for alle
> collations. Der er følgende muligheder:
>
> _BIN => Binær sortering (altid enkeltstående)
> _CI => Case-insensitive - ikke versalfølsom - dvs. "a" = "A"
> _CS => Case-sensitive - versalfølsom - "a" <> "A"
> _AI => Accent-insensitive - "a" = "á" = "à"
> _AS => Accent-sensitive - "a" <> "á"
> _KS => Kanatype-sensitive (kun relevant for japanske tegn)
> _WS => Width-sensitive - forskel mellem single-byte og double-
> byte - og jeg aner ikke hvad det betyder i praksis
>
> Ovenstående endelser sættes efter den generelle collation så man fx
> får Danish_Norwegian_CI_AI (Dansk/Norsk, ikke-versalfølsom, ikke-
> accentfølsom).
>
> Du kan se endelserne beskrevet i BOL (onlinehjælpen) under Windows
> Collation Sorting Styles. Der er også en del hjælp under collate og
> collations.
>
> Endelig kan du få en liste over alle tilgængelige collations med
> kommandoen: SELECT * FROM ::fn_helpcollations(). Vil man bare have
> de danske ud (jeg får 753 rækker fra ovennævnte forespørgsel) kan
> man i stedet skrive
>
> SELECT * FROM ::fn_helpcollations()
> WHERE name LIKE 'Danish%'
>
> - så får man "kun" 17!
> --
> Jens Gyldenkærne Clausen
> MF (medlem af FIDUSO -
www.fiduso.dk)
> I ovenstående tekst benyttes nyt komma.