Collation nedir

Collation nedir?

Collation , verilerin nasıl sıralanıp karşılaştırılacağını belirleyen bir kurallar kümesini ifade eder. Karakter verileri, büyük / küçük harf duyarlılığını, vurgu işaretlerini, karakter türlerini ve karakter genişliğini belirleme seçenekleriyle doğru karakter sırasını tanımlayan kurallar kullanılarak sıralanır.

Büyük küçük harf duyarlılığı

A ve a , B ve b , vb. Aynı şekilde muamele edilirse, büyük / küçük harf duyarlı değildir. Bir bilgisayar, A'yı farklı şekilde ele alır, çünkü girişi ayırt etmek için ASCII kodunu kullanır. A'nın ASCII değeri 65, a ise 97'dir . B'nin ASCII değeri 66 ve b , 98'dir .

Aksan hassasiyeti

A ve á , o ve ó aynı şekilde muamele edilirse, aksan duyarlı değildir. Bir bilgisayar a ve á'ya farklı davranır , çünkü girişi ayırt etmek için ASCII kodunu kullanır. A'nın ASCII değeri 97 ve á 225'tir . ASCII değeri o 111 ve 243 .

Kana Hassasiyeti

Japonca kana karakterleri Hiragana ve Katakana farklı şekilde ele alındığında Kana'ya duyarlı denir.

Genişlik hassasiyeti

Tek baytlık bir karakter (yarım genişlik) ve çift baytlık bir karakter (tam genişlik) olarak temsil edildiğinde aynı karakter farklı olarak ele alındığında genişliğe duyarlıdır.

Veri tabanı, Tablolar ve farklı collationlı sütunlar

SQL Server 2000, kullanıcıların farklı harmanlamalarda veritabanları, tablolar ve sütunlar oluşturmasına olanak tanır.
Farklı collation içeren veritabanları
1:  use master  
2:  go  
3:  create database BIN collate Latin1_General_BIN  
4:  go  
5:  create database CI_AI_KS collate Latin1_General_CI_AI_KS  
6:  go  
7:  create database CS_AS_KS_WS collate Latin1_General_CS_AS_KS_WS  
8:  go  

Tablolar ve farklı collationlı sütunlar
1:  Create table Mytable (  
2:  [colu] char(10) COLLATE Albanian_CI_AI_KS_WS NULL,  
3:  [Maydate] [char] (8) COLLATE Korean_Wansung_Unicode_CS_AS_KS NOT NULL ,  
4:  [Risk_Rating] [char] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL   
5:  )  
6:  Com  

Veritabanlarındaki karakterleri farklı collation ile karşılaştırma Aşağıdaki kodu CI_AI_KS ve CS_AS_KS_WS'de çalıştırdığımızda sonuçlar tamamen farklı olacaktır.
1:  declare @Accentvar1 char(1)  
2:  declare @Accentvar2 char(1)  
3:  declare @Casevar1 char(1)  
4:  declare @Casevar2 char(1)  
5:  set @casevar1 ='A'  
6:  set @casevar2 ='a'  
7:  set @Accentvar1 ='a'  
8:  set @Accentvar2 ='á'  
9:  if @casevar1 = @casevar2  
10:       begin  
11:            print "A and a are treated same"  
12:       end  
13:       else  
14:       begin  
15:            print "A and a are not treated same"  
16:       end  
17:  if @Accentvar1 = @Accentvar2   
18:       begin  
19:            print "A and á are treated same"  
20:       end  
21:       else  
22:       begin  
23:            print "A and á are not treated same"  
24:       end  

Bu ifadeleri CI_AI_KS veritabanında yürüttüğümüzde, sonuçlar aşağıda gösterilenlere benzer. 
A ve a aynı muamele görür A ve á aynı muamele görür Bu ifadeleri CS_AS_KS_WS veritabanında yürüttüğümüzde, sonuçlar aşağıda gösterilenlere benzer. A ve a aynı muamele görmez A ve á aynı muamele görmez .
 Büyük / küçük harf duyarlı bir veritabanında büyük / küçük harf duyarlılığını simüle etme Büyük / küçük harfe duyarlı olmayan bir veritabanında büyük / küçük harf duyarlılığını simüle etmek genellikle gereklidir. Aşağıdaki örnek, bunu nasıl başarabileceğinizi görebiliriz..
1:  Use CI_AI_KS  
2:  go  
3:  declare @var1 varchar(10)  
4:  declare @var2 varchar(10)  
5:  set @var1 ='A'  
6:  set @var2 ='a'  
7:  if ASCII(@var1) = ASCII(@var2)  
8:  print "A and a are treated same"  
9:  else  
10:  print "A and a are not same"  

Ancak, ASCII işlevi kelimeler için kullanılamaz. Büyük / küçük harfe duyarlılık simülasyonunun aynı işlevselliğini sağlamak için değişken veri türünü kullanabiliriz.
1:  Use CI_AI_KS  
2:  go  
3:  declare @var1 varchar(10)  
4:  declare @var2 varchar(10)  
5:  set @var1 ='Good'  
6:  set @var2 ='gooD'  
7:  if cast(@var1 as varbinary) = cast(@var2 as varbinary)   
8:  print "Good and gooD are treated same"  
9:  else  
10:  print "Good and gooD are not treated same"  

İlginizi Çekebilir

Sonraki
« Önceki
Previous Article
Next Post »
Yorumlar
Yorumlar