তবে বর্ণের সংজ্ঞা বলছে, এটি নন-ইউনিকোড স্ট্রিং ডেটার অনুমতি দেয় । তবে ট্রেডমার্ক (™) এবং নিবন্ধিত (®) চিহ্নগুলি ইউনিকোডের অক্ষর । সংজ্ঞাটি কি ভ্যাচার ডেটাটাইপের সংখ্যার বিরোধিতা করে?
অন্য উত্তরগুলি ভুল না হলেও, আমি মনে করি এটি বেস পরিভাষায় একটি বিভ্রান্তি দেখাতে সহায়তা করবে। আমি এই বিভ্রান্তির উদাহরণ হিসাবে প্রশ্ন থেকে উপরের উদ্ধৃতিতে দুটি শব্দকে জোর দিয়েছি। SQL সার্ভার ডকুমেন্টেশন ইউনিকোড এবং অ-ইউনিকোড কথা যখন ডেটা , তারা না নিয়ে কথা অক্ষর । তারা বাইট ক্রমগুলি বলছে যা নির্দিষ্ট অক্ষরের প্রতিনিধিত্ব করে। ইউনিকোড প্রকার (মধ্যে মূল পার্থক্য NCHAR
, NVARCHAR
, XML
, এবং অননুমোদিত / মন্দ NTEXT
) এবং অ-ইউনিকোড প্রকার ( CHAR
, VARCHAR
, এবং অননুমোদিত / মন্দ TEXT
) কি ধরনের বাইট ক্রম তারা সংরক্ষণ করতে পারেন।
নন-ইউনিকোড ধরণের কয়েকটি 8-বিট এনকোডিংগুলির মধ্যে একটি সংরক্ষণ করে, যখন ইউনিকোড প্রকারগুলি একক 16-বিট ইউনিকোড এনকোডিং সংরক্ষণ করে: ইউটিএফ -16 লিটল এন্ডিয়ান। অন্যান্য উত্তরে যেমন উল্লেখ করা হয়েছে, কোন অক্ষর 8-বিট / নন-ইউনিকোড এনকোডিংয়ে সংরক্ষণ করা যায় তা কোড পৃষ্ঠার উপর নির্ভর করে যা কোলেশন দ্বারা নির্ধারিত হয়। অন্যরা উল্লেখ করেছেন যে "অক্ষর" এর বাইট মানটি পাওয়া যায় এমন কোড পৃষ্ঠাতে পৃথক হতে পারে, বেশ কয়েকটি ইবিসিডিক কোড পৃষ্ঠাতে (উইন্ডোজ- এর বিভিন্নতা) নিয়ে কাজ করার সময় বাইট মান একই কোড পৃষ্ঠায়ও পরিবর্তিত হতে পারে can 1252), যা কেবলমাত্র প্রবীণদের মধ্যে পাওয়া যায়, এস -কিউএল সার্ভার কোলিশেশনগুলি ব্যবহার করা উচিত নয় (যেমন নামগুলি শুরু হয় SQL_
)।
সুতরাং, সংজ্ঞাটি নির্ভুল: আপনি নন-ইউনিকোড টাইপের মধ্যে যে অক্ষরগুলি সংরক্ষণ করতে পারবেন তা সর্বদা 8-বিট হয় (এমনকি যদি তারা একটিমাত্র "চরিত্র" হিসাবে দুটি 8-বিট মান ব্যবহার করে তবে ডাবল- বাইট চরিত্র সেট / ডিবিসিএস কোড পৃষ্ঠাগুলি এর জন্য অনুমতি দেয়)। এবং ইউনিকোড ডেটাটাইপগুলি সর্বদা 16-বিট থাকে, এমনকি যদি তারা কখনও কখনও একক "চরিত্র" হিসাবে অর্থাত্ দুটি 16-বিট মান ব্যবহার করে (অর্থাত্ একটি সারোগেট জুটি যা পরিপূরক চরিত্রের প্রতিনিধিত্ব করে)।
এবং, এসকিউএল সার্ভারের জন্য স্থানীয়ভাবে ইউটিএফ -8 এনকোডিং VARCHAR
এবং CHAR
এসকিউএল সার্ভার 2019 হিসাবে ডেটাটাইপগুলি সমর্থন করার কারণে ,
VARCHAR
আর "নন-ইউনিকোড" হিসাবে উল্লেখ করা যায় না। সুতরাং, সেপ্টেম্বর 2018 এ এসকিউএল সার্ভার 2019 এর প্রথম পাবলিক বিটা দিয়ে শুরু করে, এসকিউএল সার্ভার 2019 এর VARCHAR
পূর্ববর্তী সংস্করণগুলির ক্ষেত্রে কথা বলার পরেও আমাদের "8-বিট ডেটাটাইপ" হিসাবে উল্লেখ করা উচিত This এই পরিভাষাটি 4 টি ধরণের জন্য সত্য এনকোডিংগুলির সাথে যা ব্যবহার করা যেতে পারে VARCHAR
:
- বর্ধিত এএসসিআইআই
- ডাবল-বাইট চরিত্রের সেটগুলি (ডিবিসিএস)
- EBCDIC
- ইউটিএফ -8 (ইউনিকোড)
কেবলমাত্র TEXT
ডেটাটাইপ (এসকিউএল সার্ভার ২০০৫ হিসাবে অবমানিত, সুতরাং এটি ব্যবহার করবেন না) "নন-ইউনিকোড", তবে এটি কেবল একটি প্রযুক্তিগত এবং এটি "8-বিট ডেটাটাইপ" হিসাবে উল্লেখ করা সঠিক।
NVARCHAR
, NCHAR
এবং NTEXT
"UTF-16" বা "16-বিট ডেটাটাইপ" হিসাবে উল্লেখ করা যেতে পারে। ওরাকল, আমি বিশ্বাস করি, "ইউনিকোড-কেবল" এর পরিভাষা ব্যবহার করে NVARCHAR
, তবে এটি ইউটিএফ -8 (একটি ইউনিকোড এনকোডিং) ব্যবহারের সম্ভাব্যতাও পরিষ্কারভাবে অস্বীকার করে না, যা কার্যকর হবে না, তাই সম্ভবত সবচেয়ে ভাল থেকে আটকে থাকা প্রথম দুটি বিকল্প।
নতুন ইউটিএফ -8 এনকোডিংগুলির বিষয়ে বিশদ জানতে দয়া করে আমার পোস্টটি দেখুন:
এসকিউএল সার্ভার 2019 এ নেটিভ ইউটিএফ -8 সমর্থন: ত্রাণকর্তা বা ভ্রান্ত নবী?
PS আমি এই পরিবর্তনগুলি প্রতিফলিত করতে এসকিউএল সার্ভার ডকুমেন্টেশন আপডেট করার মাধ্যমে ধীরে ধীরে আমার পথে কাজ করছি।
পিপিএস মাইক্রোসফ্ট ইতোমধ্যে ইউটিএফ -8 তথ্য সহ কয়েকটি পৃষ্ঠাগুলি আপডেট করেছে , প্রশ্নটিতে উল্লেখ করা চর এবং বারচর ডকুমেন্টেশন সহ । এটিতে আর "নন-ইউনিকোড" বাক্যাংশ নেই। তবে এটি কেবল একটি এফওয়াইআই; এটি প্রশ্নটি পরিবর্তন করে না কারণ এটি হ'ল ইউনিকোড এনকোডিংগুলি সম্পর্কিত এমন অক্ষরগুলি রয়েছে যা ভুল করে কেবল ইউনিকোড-বলে মনে করা হয়েছিল।