SQL’de metinsel ifadeleri tutmak için genelde bu veri tiplerini kullanırız. C# tarafında char, metinsel ifadelerdeki her bir karakterin tutulduğu veri tipidir. SQL tarafındaki kullanımı C#’daki string gibidir. Ancak SQL tarafında bu değişkenleri tanımlarken, metnin en fazla kaç karakter içereceğini parantez içerisinde belirtmemiz gerekir.

Değişken_Adı - CHAR(10)      =>       Burada tanımladığımız değişkenin CHAR tipinden olduğunu ve en fazla 10 karakter içereceğini belirtmiş olduk.

Bu değişkenleri tanımlarken dikkat edilmesi gereken şey, aralarında ne gibi farklar bulunduğudur. Şimdi bu farklardan bahsedelim.

CHAR(10)        => Herbir karakteri 1 byte olan ve en fazla 10 karakter içerebilen metinsel bir ifadeyi tutabilir. Tuttuğu daha kaç karakter olursa olursa olsun 10 byte’lık yer kaplar. ‘TEST’ isimli bir metni CHAR(10) tipinden bir değişkenle saklamak istediğimizde ilk 4 karakterden sonrası boşluk karakterleri ile 10’a tamamlanır.

NCHAR(10)      => Herbir karakteri 2 byte olan ve en fazla 10 karakter içerebilen metinsel bir ifadeyi tutabilir. Tuttuğu data kaç karakter olursa olsun 20 byte’lık yer kaplar. Buradaki ‘N’, ‘National’dan gelmektedir. Bu değişken içerisinde uluslar arası kodlar (UNICODE) içeren metinsel ifadeler tutulabilir. ‘N’in tek farkı budur. Eğer tuttuğumuz data UNICODE içermiyorsa, bu data tipini kullanmamız gereksizdir.

‘VAR’ ifadesi de, tutulan metnin sonundaki boşlukları silmek içindir. Yani datayı tanımlarken parantez içerisinde verdiğimiz boyutu indirgememize yarar. Hemen minik bir örnek üzerinde inceleyelim. ‘DENEME’ ifadesini bu 4 tip ile tuttuğumuzu düşünelim.

CHAR(10) => Data, ‘DENEME    ‘ şeklinde tutulur ve 10 byte yer kaplar.

NCHAR(10) => Data, ‘DENEME    ‘ şeklinde tutulur ve 20 byte yer kaplar.

VARCHAR(10) => Data ‘DENEME’ şeklinde tutulur ve 6 byte yer kaplar. (datamız 6 karakterden oluşuyor. VAR yazdığımızdan dolayı geriye kalan 4 karakter CHAR tipindeki gibi boşlukla tamamlanmak yerine, görmezden geliniyor. Bu sayede datamız gereğinden fazla yer kaplamamış olur.)

NVARCHAR(10) => Data ‘DENEME’ şeklinde tutulur ve 12 byte yer kaplar.

‘N’ ve ‘VAR’ ifadelerinin ne anlama geldiğini anlamış olduk. Şimdi de, değişkeni tanımlarken parantez içersinde maksimum girilecek karakter sayısını yazarken kullandığımız ‘MAX’ ifadesinden bahsedelim.

NVARCHAR(MAX)   => Tutlacak metinsel ifadenin kaç karakterden oluştuğunun önemi yoktur. Mesela Blog sitesinde yazdığımız bir yazının text kısmını tutmak istersek, bu veri tipini kullanabiliriz.

NOT: Eğer tutacağımız data VARCHAR(ya da CHAR) için 8000, NVARCHAR(ya da NCHAR) için 4000 karakterden fazlaysa, parantez içerisine MAX olarak tanımlamamız daha doğru olacaktır.



7 yorum:

said dedi ki...

Teşekkürler kardeşim, eline sağlık

Adsız dedi ki...

Eyvallah Onur kardeş!

Adsız dedi ki...

VARCHAR'da Türkçe karakter kullanılmaz. NVARCHAR'da kullanılır.

Adsız dedi ki...

Merhaba Nvarchar (10) deneme yazdığınızda 12 bytleik veri tutmaz hatanız var.
NVarChar (n) (l) 1 – 4000 2*l + 2 den 2*6+2= 14 bytelik alan kaplar.
VarChar (n) (l) 1 – 8000 l + 2 den 6+2=8 bytelık alan kaplar şeklinde düzeltir misiniz.

BiDünyaŞey dedi ki...

Merhaba Nvarchar (10) deneme yazdığınızda 12 bytleik veri tutmaz hatanız var.
NVarChar (n) (l) 1 – 4000 2*l + 2 den 2*6+2= 14 bytelik alan kaplar.
VarChar (n) (l) 1 – 8000 l + 2 den 6+2=8 bytelık alan kaplar şeklinde düzeltir misiniz.

Adsız dedi ki...

Merhaba Nvarchar (10) deneme yazdığınızda 12 byte veri olmaz.
NVarChar (n) (l) 1 – 4000 2*l + 2 den 2*6+2= 14 byte alan kaplar.
VarChar (n) (l) 1 – 8000 l + 2 den 6+2=8 bytelık alan kapmaz düzelt.

Unknown dedi ki...

eyv allah razı olsun faydalandık değerli bilgilerinizden

Yorum Gönder