Oracle में, DECODE फ़ंक्शन हमें क्वेरी में प्रक्रियात्मक if-then-else लॉजिक जोड़ने की अनुमति देता है। इस ब्लॉग में, हम SQL में DECODE फ़ंक्शन की पूरी समझ प्राप्त करने का प्रयास करेंगे। हम DECODE, इसके सिंटैक्स का उपयोग करने के विभिन्न तरीकों को सीखेंगे और इसे उदाहरणों के साथ समझेंगे। ब्लॉग के अंत तक हमारे साथ बने रहें।
जिन विषयों को कवर किया जा रहा है वे हैं:
- SQL में DECODE फ़ंक्शन क्या है?
- DECODE फ़ंक्शन के लिए सिंटैक्स
- DECODE फ़ंक्शन के उदाहरण
चलिए एक एक करके शुरू करते हैं।
SQL में DECODE फ़ंक्शन क्या है?
Oracle में, DECODE फ़ंक्शन हमें क्वेरी में प्रक्रियात्मक if-then-else लॉजिक जोड़ने की अनुमति देता है। DECODE व्यंजक की तुलना प्रत्येक खोज मान से एक-एक करके करता है। यदि अभिव्यक्ति खोज के बराबर है, तो संबंधित परिणाम Oracle डेटाबेस द्वारा लौटाया जाता है। यदि कोई मिलान नहीं मिलता है, तो डिफ़ॉल्ट वापस कर दिया जाता है। यदि डिफ़ॉल्ट को छोड़ दिया जाता है, तो Oracle अशक्त हो जाता है।
तर्कों के प्रकार हो सकते हैं:
- संख्यात्मक प्रकार (NUMBER, BINARY_FLOAT, या BINARY_DOUBLE)
यदि पहली खोज-परिणाम जोड़ी संख्यात्मक है, तो Oracle सभी खोज-परिणाम अभिव्यक्तियों की तुलना करता है और उच्चतम संख्यात्मक पूर्वता वाले तर्क को खोजने के लिए पहले expr की तुलना करता है, शेष तर्कों को उस डेटाटाइप में परोक्ष रूप से परिवर्तित करता है, और उस विशेष डेटाटाइप को लौटाता है।
- चरित्र प्रकार
यदि expr और search वर्ण डेटा हैं, तो Oracle गैर-गद्देदार तुलना शब्दार्थ का उपयोग करके उनकी तुलना करता है। expr, खोज, और परिणाम डेटाटाइप CHAR, VARCHAR2, NCHAR, या NVARCHAR2 में से कोई भी हो सकता है। लौटाई गई स्ट्रिंग VARCHAR2 डेटाटाइप की है और पहले परिणाम पैरामीटर के समान वर्ण सेट में है।
Oracle डेटाबेस शॉर्ट-सर्किट मूल्यांकन का उपयोग करता है। यह सभी खोज मूल्यों का मूल्यांकन करने के बजाय अभिव्यक्ति के साथ तुलना करने से पहले ही खोज मूल्यों का मूल्यांकन करता है। यदि पिछली खोज अभिव्यक्ति के बराबर है, तो मूल्यांकन समाप्त कर दिया जाता है।
Oracle तुलना से पहले expr और खोज मानों को पहले खोज मान के डेटाटाइप में कनवर्ट करता है। और वापसी मान को पहले परिणाम के समान डेटा प्रकार में कनवर्ट करता है।
उदाहरण: यदि पहले परिणाम में डेटाटाइप CHAR है या यदि पहला परिणाम शून्य है, तो Oracle रिटर्न मान को डेटा प्रकार VARCHAR2 में बदल देता है।
Oracle द्वारा दो नल को समतुल्य माना जाता है। यदि expr रिक्त है, तो Oracle NULL देता है जो पहली खोज का परिणाम है।
DECODE फ़ंक्शन में शामिल किए जा सकने वाले घटकों की अधिकतम संख्या 255 है। इसमें व्यंजक, खोज और परिणाम तर्क शामिल हैं।
DECODE फ़ंक्शन का उपयोग Oracle या PLSQL के निम्नलिखित संस्करणों में किया जा सकता है:
Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i
एक बुनियादी उदाहरण:
निम्नलिखित उदाहरण में, Oracle DECODE () फ़ंक्शन दूसरे तर्क के साथ पहले तर्क की तुलना करता है। चूंकि वे बराबर हैं, फ़ंक्शन दूसरा तर्क देता है जो स्ट्रिंग 'वन' है।
SELECT DECODE(1, 1, 'One') FROM dual;
DECODE फ़ंक्शन का सिंटैक्स है:
DECODE(अभिव्यक्ति , खोज , परिणाम [, खोज , परिणाम]… [, डिफ़ॉल्ट (वैकल्पिक)])
<मजबूत> अभिव्यक्ति
वह मूल्य जिसकी तुलना की जानी है। तुलना करने से पहले यह स्वचालित रूप से पहले खोज मूल्य के डेटा प्रकार में परिवर्तित हो जाता है।
खोज
वह मान जिसकी तुलना व्यंजक से की जाती है।
परिणाम
वह मान जो लौटाया जाता है, यदि एक्सप्रेशन=खोज।
डिफ़ॉल्ट
यदि कोई मिलान नहीं है, तो DECODE फ़ंक्शन डिफ़ॉल्ट रूप से वापस आ जाएगा और यदि डिफ़ॉल्ट को छोड़ दिया जाता है, तो फ़ंक्शन NULL वापस आ जाएगा।
DECODE फ़ंक्शन के उदाहरण
- DECODE फ़ंक्शन का उपयोग Oracle/PLSQL में निम्नानुसार किया जा सकता है
SELECT bank_name, DECODE(bank_id, 001, 'SBI', 002, 'ICICI', 003, ‘Dena', 'Gateway') result FROM banks;
उपरोक्त DECODE() कथन के लिए समतुल्य IF-THEN-ELSE कथन:
IF bank_id = 001 THEN result := 'SBI'; ELSIF bank_id = 002 THEN result := 'ICICI'; ELSIF bank_id = 003 THEN result := 'Dena'; ELSE result := 'Gateway'; END IF;
DECODE फ़ंक्शन एक-एक करके प्रत्येक bank_id मान की तुलना करेगा।
- DECODE फ़ंक्शन दो तिथियों (दिनांक 1 और दिनांक 2) की तुलना करने के लिए, जहां, यदि दिनांक 1> दिनांक 2 है, तो DECODE फ़ंक्शन दिनांक 2 लौटाएगा। अन्यथा, DECODE फ़ंक्शन को date1 वापस लौटना चाहिए
DECODE((date1 - date2) - ABS(date1 - date2), 0, date2, date1)
यदि दिनांक1 दिनांक2 से बड़ा है, तो नीचे दिया गया सूत्र 0 के बराबर है:
(date1 - date2) - ABS(date1 - date2)
ऊपर वर्णित दिनांक उदाहरण को निम्न प्रकार से भी संशोधित किया जा सकता है:
DECODE(SIGN(date1-date2), 1, date2, date1)
- DECODE कथन जो निम्नलिखित लौटाएगा:
अगर घंटे_ऑफ_वर्क <1 फिर 0.04 . लौटाएं
अगरhours_of_work>=1 और <5 तो 0.04 . लौटाएं
अगर घंटे_ऑफ_वर्क> 5 तो 0.06 लौटाएं
यहां, आपको एक ऐसा फॉर्मूला बनाने की जरूरत है, जो आपकी प्रत्येक श्रेणी के लिए एक ही संख्या का मूल्यांकन करेगा।
कर्मचारियों से perc_value के रूप मेंSELECT emp_name, DECODE(TRUNC (( hours_of_work + 3) / 4), 0, 0.04, 1, 0.04, 0.06) as perc_value FROM employees;
यह सब DECODE फ़ंक्शन के बारे में है, अब तक आपको यह स्पष्ट तस्वीर मिल गई होगी कि यह कैसे काम करता है और यह फ़ंक्शन कितना उपयोगी है। अब, जब भी SQL पर काम करते समय किसी भी IF-ELSE तर्क की आवश्यकता हो, उनका उपयोग करने का प्रयास करें। मुझे उम्मीद है कि लेख ने आपको DECODE कथन की अवधारणाओं में मदद की है।
यदि आप MySQL के बारे में अधिक जानना चाहते हैं और इस ओपन-सोर्स रिलेशनल डेटाबेस को जानना चाहते हैं, तो हमारा MySQL DBA प्रमाणन प्रशिक्षण देखें। जो प्रशिक्षक के नेतृत्व वाले लाइव प्रशिक्षण और वास्तविक जीवन परियोजना अनुभव के साथ आता है। यह प्रशिक्षण आपको MySQL को गहराई से समझने और विषय पर महारत हासिल करने में मदद करेगा।
हमारे लिए एक प्रश्न है? कृपया इसका उल्लेख “SQL में DECODE” . के टिप्पणी अनुभाग में करें और मैं तुम्हारे पास वापस आऊंगा।