Eyl 6
Digg
Stumbleupon
Technorati
Delicious

SQLite da alan bazında küçük/büyük harf duyarlılığı

Karşılaştırmalar, bir tablonuz var ve kişilere ait ad ve telefon bilgilerini tutuyorsunuz ve kişi ad alanını UNIQUE olarak işaretlediniz. Peki hiç şunu düşündünüz mü? Kullanıcı Murat Genç adında bir kayıt girdi ve daha sonra başka biri MURAT GENÇ diye bir kayıt girdi. UNIQUE yaptığınız alan acaba böyle bir kayıt girişine izin verecekmidir. Cevap evet. Peki neden; SQLite da bir alana girilen veri küçük/büyük harfe duyarlı olarak eklenir. Yani SQLite için a ve A farklı şeylerdir. Peki bunu engellemenin bir yolu var mı? Veri bütünlüğü kavramı dahilinde alan bazında verinin bütünlüğünü korumak için alan tanımı yapılırken küçük/büyük harfe göre duyarlı olup olmamasını belirtebiliriz. COLLATE anahtar kelimesi ile bunu gerçekleştirebiliriz. SQLite 3 tip gömülü karşılaştırma tipi vardır. Biri default olarak ayarlı olan BINARY, diğeri küçük/büyük harfe göre duyarlılığını kaldıran NOCASE üçüncüsü ise BINARY karşılaştırmanın tersi olan REVERSE.
Sonuç olarak SQLite da tanımlanan bir alanda büyük/küçük harf duyarlılığını kaldırmak istiyorsak alan tanımında COLLATE NOCASE ifadesini kullanmamız yeterlidir.
CREATE TABLE Kisiler (id INTEGER PRIMARY KEY,ad TEXT NOT NULL COLLATE NOCASE UNIQUE)