/ 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
havd betyder det??
Fra : N9


Dato : 12-11-02 21:31

[Brugernavn] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL

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

takker






 
 
Jens Gyldenkærne Cla~ (12-11-2002)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 12-11-02 22:26

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.

N9 (12-11-2002)
Kommentar
Fra : N9


Dato : 12-11-02 23:14

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.



Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408522
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste