উত্তর:
আসুন ধরে নেওয়া যাক ডাটাবেস অক্ষর সেটটি ইউটিএফ -8, যা ওরাকলের সাম্প্রতিক সংস্করণগুলিতে প্রস্তাবিত সেটিংস। এই ক্ষেত্রে, কিছু অক্ষর ডাটাবেসে সঞ্চয় করতে 1 বাইটের বেশি গ্রহণ করে।
আপনি যদি ক্ষেত্রটিকে এই হিসাবে সংজ্ঞায়িত করেন VARCHAR2(11 BYTE)
, অরাকল স্টোরের জন্য 11 টি বাইট ব্যবহার করতে পারে তবে আপনি সম্ভবত 11 টি অক্ষর ক্ষেত্রের মধ্যে রাখতে পারবেন না কারণ তাদের মধ্যে কিছু সংরক্ষণের জন্য একাধিক বাইট যেমন, অ-ইংরেজি অক্ষর সংরক্ষণ করে।
VARCHAR2(11 CHAR)
আপনি ওরাকলকে বলার সাথে সাথে ক্ষেত্রটি সংজ্ঞায়িত করে এটি 11 টি অক্ষর সংরক্ষণ করার জন্য পর্যাপ্ত জায়গা ব্যবহার করতে পারে, প্রতিটি একক জমা করার জন্য এটি কতগুলি বাইট নেয় তা বিবেচনা করে না। একটি একক অক্ষরের জন্য 4 বাইট পর্যন্ত প্রয়োজন হতে পারে।
একটিতে 11 বাইটের জন্য ঠিক স্থান রয়েছে অন্যটি হ'ল 11 টি অক্ষরের জন্য। ইউনিকোড ভেরিয়েন্টের মতো কিছু অক্ষর চর প্রতি একাধিক বাইট ব্যবহার করতে পারে তাই 11 বাইট ক্ষেত্রটিতে এনকোডিংয়ের উপর নির্ভর করে 11 টিরও কম অক্ষর থাকতে পারে।
Http://www.joelonsoftware.com/articles/Unicode.html এও দেখুন
আমি নিশ্চিত না যেহেতু আমি একজন ওরাকল ব্যবহারকারী নই তবে আমি ধরে নিয়েছি যে আপনি যখন ইউনিকোড (ইউটিএফ -16 / 32) এর মতো মাল্টি-বাইট চরিত্র সেট ব্যবহার করেন তখন পার্থক্যটি ত্রুটিযুক্ত। এই ক্ষেত্রে, 11 বাইট 11 টিরও কম অক্ষরের জন্য অ্যাকাউন্ট করতে পারে।
এছাড়াও ক্ষেত্রের ধরণগুলি উচ্চারণযুক্ত অক্ষর বা কেস সম্পর্কিত আলাদাভাবে আচরণ করা যেতে পারে, উদাহরণস্বরূপ 'বাইনারিফিল্ড (ete) = "été"' মিলবে না যখন 'চরফিল্ড (ete) = "été"' সম্ভবত (আবার ওরাকল সম্পর্কে নিশ্চিত নয়) ।
VARCHAR2
। একটি ঘোষণার জন্যVARCHAR2(4000 CHAR)
যদি কিছু চরিত্রের একাধিক বাইট স্টোরেজ প্রয়োজন হয় তবে 4000 টিরও কম অক্ষরের অনুমতি দেওয়া হবে।