উত্তর:
এখন হিসাবে, তারা প্রতিশব্দ।
VARCHAR
স্ট্যান্ডার্ড প্রেসক্রিপশন হিসাবে ভবিষ্যতে ফাঁকা স্ট্রিং এবং Oracle
পার্থক্য সমর্থন দ্বারা সংরক্ষিত ।NULL
ANSI
VARCHAR2
একটি NULL
এবং খালি স্ট্রিংয়ের মধ্যে পার্থক্য করে না এবং কখনই করবে না।
আপনি যদি খালি স্ট্রিংয়ের উপর নির্ভর করেন এবং NULL
একই জিনিস হয়ে থাকেন তবে আপনার ব্যবহার করা উচিত VARCHAR2
।
VARCHAR2
কারণ বর্তমানে এমন কোনও ধরণের নেই যা VARCHAR
উচিত মতো আচরণ করে । আসলে, VARCHAR
এটি যথাযথভাবে প্রয়োগ না করা অবধি আপনার ব্যবহার করা উচিত নয় ।
where x is NULL
থেকে আয় ভিন্ন ফলাফল where x = ''
নেই না মানে NULL
এবং ''
অন্য কোন উপায়ে বিভিন্ন আছে। =
অপারেটরের কারণে ভিন্ন আচরণ হয় ।
বর্তমানে ভর্চার আরচারার মতোই আচরণ করে। তবে, প্রকারটি VARCHAR
ব্যবহার করা উচিত নয় কারণ এটি ভবিষ্যতের ব্যবহারের জন্য সংরক্ষিত।
গৃহীত হয়েছে: পার্থক্য, পার্থক্য
VARCHAR
ব্যবহার করা উচিত নয়। আমি এটি সম্পাদনা করেছি
সর্বশেষতম স্থিতিশীল ওরাকল উত্পাদন সংস্করণ 12.2 থেকে নেওয়া: ডেটা টাইপ
প্রধান পার্থক্য হ'ল এটি VARCHAR2
একটি অভ্যন্তরীণ ডাটা টাইপ এবং VARCHAR
এটি একটি বাহ্যিক ডেটা টাইপ । সুতরাং আমাদের অভ্যন্তরীণ এবং বাহ্যিক ডেটা ধরণের মধ্যে পার্থক্য বুঝতে হবে ...
একটি ডাটাবেসের ভিতরে মানগুলি সারণীতে কলামগুলিতে সঞ্চিত থাকে। অভ্যন্তরীণভাবে, ওরাকল অভ্যন্তরীণ ডেটা ধরণের হিসাবে পরিচিত বিশেষ ফরম্যাটে ডেটা উপস্থাপন করে ।
সাধারণভাবে, ওসিআই (ওরাকল কল ইন্টারফেস) অ্যাপ্লিকেশনগুলি উপাত্তের অভ্যন্তরীণ ডেটা উপস্থাপনের সাথে কাজ করে না, তবে তারা যে ভাষায় লিখিত রয়েছে তার দ্বারা পূর্বনির্ধারিত হোস্ট ভাষার ডেটা টাইপগুলির সাথে কাজ করে না। যখন কোনও ওসিআই ক্লায়েন্ট অ্যাপ্লিকেশন এবং একটি ডাটাবেস টেবিলের মধ্যে ডেটা স্থানান্তরিত হয়, ওসিআই লাইব্রেরিগুলি অভ্যন্তরীণ ডেটা ধরণের এবং বাহ্যিক ডেটা ধরণের মধ্যে ডেটা রূপান্তর করে।
বাহ্যিক প্রকারগুলি স্বতন্ত্র ডেটা ফর্ম্যাটগুলির পরিবর্তে হোস্ট ভাষার ধরণের সাথে কাজ করা সম্ভব করে প্রোগ্রামারকে একটি সুবিধা দেয়। ওরাকল ডাটাবেস এবং একটি ওসিআই অ্যাপ্লিকেশনের মধ্যে ডেটা স্থানান্তর করার সময় ওসিআই তথ্য প্রকারের বিভিন্ন ধরণের রূপান্তর করতে পারে। ওরাকল অভ্যন্তরীণ ডেটা ধরণের চেয়ে ওসিআই বাহ্যিক ডেটা ধরণের রয়েছে।
VARCHAR2
ডাটা টাইপ 4000 বাইটের সর্বাধিক দৈর্ঘ্য সঙ্গে অক্ষরের একটি পরিবর্তনশীল দৈর্ঘ্যের স্ট্রিং। যদি init.ora পরামিতি ম্যাক্স_স্ট্রিং_সাইজটি ডিফল্ট হয় তবে এর সর্বোচ্চ দৈর্ঘ্য VARCHAR2
4000 বাইট হতে পারে। যদি init.ora পরামিতি সর্বোচ্চ_ স্ট্রিং_সাইজ = প্রসারিত হয় তবে এর সর্বোচ্চ দৈর্ঘ্য VARCHAR2
32767 বাইট হতে পারে
VARCHAR
দৈর্ঘ্য তারতম্য এর ডাটা টাইপ দোকানে অক্ষর স্ট্রিং। প্রথম 2 বাইটে অক্ষরের স্ট্রিংয়ের দৈর্ঘ্য থাকে এবং বাকী বাইটগুলিতে স্ট্রিং থাকে। একটি বাঁধাই বা একটি সংজ্ঞায়িত কলটিতে স্ট্রিংয়ের নির্দিষ্ট দৈর্ঘ্যে অবশ্যই দুটি দৈর্ঘ্য বাইট অন্তর্ভুক্ত করা উচিত, তাই VARCHAR
প্রাপ্ত বা প্রেরণযোগ্য বৃহত্তম স্ট্রিং 65533 বাইট দীর্ঘ, 65535 নয়।
একটি 12.2 ডাটাবেসের মধ্যে একটি দ্রুত পরীক্ষা দাড়ায় যে একটি হিসাবে অভ্যন্তরীণ ডাটা টাইপ , ওরাকল এখনও একটি একইরূপে VARCHAR
হিসেবে pseudotype জন্য VARCHAR2
। এটি এমনটি নয় SYNONYM
যা ওরাকলে একটি আসল অবজেক্টের ধরণ।
SQL> select substr(banner,1,80) from v$version where rownum=1;
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
SQL> create table test (my_char varchar(20));
Table created.
SQL> desc test
Name Null? Type
MY_CHAR VARCHAR2(20)
VARCHAR
প্রোসি / সি ++ প্রম্পম্পাইলার বিকল্পগুলির জন্য কিছু নিদর্শন রয়েছে। যারা প্রোগ্রামার আগ্রহী তাদের জন্য লিঙ্কটি এখানে রয়েছে: প্রো * সি / সি ++ প্রোগ্রামার গাইড
কিছু পরীক্ষা-নিরীক্ষার পরে (নীচে দেখুন), আমি নিশ্চিত করতে পারি যে সেপ্টেম্বর 2017 পর্যন্ত গ্রহণযোগ্য উত্তরে বর্ণিত কার্যকারিতার সাথে কিছুই পরিবর্তন হয়নি : -
NULL
উভয়ের জন্য গুলিVARCHAR
এবংVARCHAR2
।এই দুটি কীওয়ার্ডের historicalতিহাসিক কারণটি একটি ভিন্ন প্রশ্নের উত্তরে ভালভাবে ব্যাখ্যা করা হয়েছে ।
VARCHAR 2000 বাইট অব অক্ষর সংরক্ষণ করতে পারে যখন VARCHAR2 4000 বাইট অক্ষর সংরক্ষণ করতে পারে।
আমরা যদি ডেটাটাইপটিকে ভোরচার হিসাবে ঘোষণা করি তবে এটি ন্যূনুয়াল মানগুলির জন্য স্থান দখল করবে। VARCHAR2 ডেটাটাইপের ক্ষেত্রে এটি NULL মানগুলির কোনও স্থান দখল করবে না। যেমন,
name varchar(10)
নামটি 'রবি__' হলেও, মেমরির 6 বাইট রিজার্ভ করবে whereas
name varchar2(10)
ইনপুট স্ট্রিংয়ের দৈর্ঘ্য অনুসারে স্থান সংরক্ষণ করবে। যেমন, 'রবি__' এর জন্য মেমরির 4 বাইট।
এখানে _ NULL প্রতিনিধিত্ব করে।
দ্রষ্টব্য: বার্চার নাল মানগুলির জন্য স্থান সংরক্ষণ করবে এবং ভারচার 2 নাল মানগুলির জন্য কোনও স্থান সংরক্ষণ করবে না।
VARCHAR
সঙ্গে CHAR
।
বর্তমানে, তারা একই রকম। তবে আগে
VARCHAR
NULL
ভবিষ্যতে খালি স্ট্রিংয়ের মধ্যে পার্থক্য এবং খালি স্ট্রিংকে সমর্থন করার জন্য ওরাকল দ্বারা সংরক্ষিত রয়েছে , যেমন এএনএসআই স্ট্যান্ডার্ড নির্দেশ দেয়।
VARCHAR2
একটি NULL
এবং খালি স্ট্রিংয়ের মধ্যে পার্থক্য করে না এবং কখনই করবে না।
Emp_name varchar(10)
- আপনি যদি 10 টিরও কম সংখ্যার মান প্রবেশ করেন তবে অবশিষ্ট স্থানটি মুছে ফেলা যাবে না। এটিতে মোট 10 টি স্পেস ব্যবহার করা হয়েছিল।
Emp_name varchar2(10)
- আপনি যদি 10 টিরও কম সংখ্যার মান লিখেন তবে অবশিষ্ট স্থান স্বয়ংক্রিয়ভাবে মোছা হবে
create table deleteme_table(v varchar(10), v2 varchar2(10)); insert into deleteme_table (v, v2) values ('abc','abc'); select v, length(v), v2, length(v2) from deleteme_table;