2009-08-13 8 views
13

Yasal Uyarı: Genelde SQL ve veritabanları için çok yeni.[My] SQL VARCHAR Boyut ve Boş Sonlandırma


En fazla 32 karakterden oluşan metin verilerini depolayacak bir alan oluşturmam gerekiyor. "VARCHAR(32)", verilerim için tam olarak 32 karaktere sahip olduğumu gösterir mi? Boş sonlandırma için fazladan bir karakter ayırmam gerekiyor mu?

Basit bir test yaptım ve bunun bir WYSIWYG arabelleği olduğu görülüyor. Ancak, aslında ne yaptığını bilen insanlardan somut bir cevap almak istedim.


C [++] arka planım var, bu yüzden bu soru kafamdaki alarm çanlarını yükseltiyor.

cevap

24

Evet, elinizde 32 karakter var. SQL, bazı programlama dilleri gibi nul sonlandırılmış dizeleri ile ilgilenmez.

+0

Teşekkür ederim, bu bir rahatlama. SELECTing alanında, bellek tahsisinin açıklaması için –

1

VARCHAR belirtim boyutunuz, verilerinizin maksimum boyutudur, bu nedenle, bu durumda 32 karakter. Ancak, VARCHARS dinamik bir alan olduğundan, kullanılan gerçek fiziksel depolama yalnızca verilerinizin boyutu artı bir veya iki bayttır. Bir VARCHAR (32) içine 10 karakter dizesini koyarsanız

, fiziksel depolama 11 veya 12 bayt (manuel size tam formülünü anlatacağım) olacaktır.

Ancak

, MySQL (yani. SELECT'in sonra) sonuç kümeleri ile uğraşan zaman, 32 bayt her kayıt için bu alan için bellekte tahsis edilecektir.

+0

+1. TEXT ve BLOB alanları ile nasıl çalıştığını merak ediyorum ... – Leonel