मुद्दा नीचे आता है कि क्या आप char . का उपयोग करते हैं या varchar2 आपके प्रश्नों में तुलना शब्दार्थ। यदि आपके पास हार्ड-कोडेड स्ट्रिंग अक्षर या char(10) . है चर, Oracle char . का उपयोग करता है तुलनात्मक अर्थशास्त्र जो पिछली सफेद जगह को अनदेखा करना है। अगर आपके पास varchar2(10) . है चर, Oracle varchar2 . का उपयोग करता है तुलना शब्दार्थ जिसमें पिछला सफेद स्थान शामिल है। इस प्रकार
select aa
into v_temp
from abc
where aa in (v_aa);
एक पंक्ति लौटाएगा यदि v_aa एक char(10) . के रूप में परिभाषित किया गया है (या यदि इसे एक स्ट्रिंग अक्षर के साथ प्रतिस्थापित किया गया है) लेकिन नहीं अगर इसे varchar(10) के रूप में परिभाषित किया गया है ।
यह (कई) कारणों में से एक है कि ज्यादातर लोग char . से बचते हैं डेटा प्रकार पूरी तरह से। व्यक्तिगत रूप से, मुझे कभी-कभार होने वाले char . से कोई ऐतराज नहीं है वास्तव में निश्चित-चौड़ाई वाले डेटा के लिए (यानी char(1) झंडे और char(2) . के लिए राज्य कोड के लिए) भले ही char . का उपयोग करने का कोई लाभ नहीं है varchar2 . से अधिक उन परिदृश्यों में। ऐसी किसी भी चीज़ के लिए जो निश्चित-चौड़ाई नहीं है, हालांकि, char . का उपयोग करके कुछ समझ नहीं आया। आप Oracle को ज़रूरत से ज़्यादा जगह लेने के लिए मजबूर कर रहे हैं और स्ट्रिंग तुलना शब्दार्थ (अन्य मुद्दों के बीच) के दो सेटों से निपटने के लिए अपने लिए और अधिक काम कर रहे हैं।