Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

Oracle केस स्टेटमेंट युक्तियों और उदाहरणों के साथ समझाया गया

हमने पिछली पोस्ट में Oracle डिकोड प्रोसेसिंग का काम देखा है

Oracle sql डिकोड प्रोसेसिंग

आइए अब Oracle केस स्टेटमेंट प्रोसेसिंग देखें

Oracle में केस स्टेटमेंट

यह डिकोड स्टेटमेंट के समान है। Oracle 8.1.6 से पहले के डेटाबेस में केवल DECODE फ़ंक्शन था। CASE को Oracle 8.1.6 में एक मानक, अधिक सार्थक और अधिक शक्तिशाली फ़ंक्शन के रूप में पेश किया गया था।

सब कुछ DECODE कर सकता है, CASE भी कर सकता है। हालांकि CASE और भी बहुत कुछ कर सकता है, जो DECODE नहीं कर सकता। हम इस लेख में विस्तृत उदाहरण देखेंगे

आइए केस स्टेटमेंट सिंटेक्स से शुरू करें

CASE [expression]

when condition_1 then value_1
when condition_2 then value_2
when condition_2 then value_2
….

else value_n
end

अभिव्यक्ति वैकल्पिक है

हम केस स्टेटमेंट को दो कैटेगरी सिंपल केस स्टेटमेंट और सर्चेबल केस स्टेटमेंट में विभाजित कर सकते हैं

साधारण केस स्टेटमेंट डिकोड फ़ंक्शन की तरह है।

साधारण केस स्टेटमेंट के साथ उदाहरण

select
case
region
when ‘N’ then ’North’
when ‘S’ then ’South’
when ‘E’ then ’East’,
when ‘W’ then ’West’
else ‘UNKNOWN’
end
from
customer;

खोज योग्य केस स्टेटमेंट केस स्टेटमेंट होते हैं जहां हम एक शर्त या विधेय निर्दिष्ट करते हैं (कई शर्तों के साथ ओरेकल में केस स्टेटमेंट)

SQL> select emp_name
, case
when Salary < 10000
then 'Junior Level'
when (Salary >=10000 and Salary < 50000)
then 'Middle Level'
when (Salary >= 50000 and Salary < 100000)
then 'Senior Level'
else 'Managers'
end Emp_level
from employee_info
where rownum < 5;

EMP_NAME EMP_LEVEL
---------- ---------
JOHN Junior Level
DON Senior Level
BOB Manager
BILL Middle Level

नेस्टेड Oracle केस स्टेटमेंट

यह केस स्टेटमेंट में केस स्टेटमेंट है

SQL> select emp_name
, case
when Salary < 10000
then 'Junior Level'
when (Salary >=10000 and Salary < 50000)
then 'Middle Level'
when (Salary >= 50000 and Salary < 100000)
then 'Senior Level'
else  (Case when grade ='20'  then 'Vice President'
when grade='21'  then 'Senior Vice President'
else 'Manager'
End)
end Emp_level
from employee_info
where rownum < 5;

सरल और खोजने योग्य केस स्टेटमेंट के बारे में महत्वपूर्ण बिंदु

(1) खोजा गया मामला "कब" विकल्पों में से प्रत्येक के तहत स्वतंत्र रूप से स्थितियों का मूल्यांकन करता है। इस संरचना के साथ, एक साधारण मामले की तुलना में खोजे गए मामले के साथ कहीं अधिक जटिल परिस्थितियों को लागू किया जा सकता है।

(2) एक खोजा गया मामला कई स्तंभों, तुलनाओं और AND/OR ऑपरेटरों का उपयोग करके कई परीक्षणों को जोड़ सकता है।

(3) दोनों सरल और खोजे गए CASE निर्माण, शर्तों का मूल्यांकन ऊपर से नीचे तक क्रमिक रूप से किया जाता है, और पहला मैच मिलने के बाद निष्पादन बाहर निकल जाता है। तो, मान लीजिए कि एक से अधिक शर्तें सत्य हैं, केवल पहली क्रिया पर विचार किया जाता है।

(4) Oracle डाटाबेस शॉर्ट-सर्किट मूल्यांकन का उपयोग करता है। यही है, एक साधारण CASE अभिव्यक्ति के लिए, डेटाबेस प्रत्येक तुलना_एक्सपीआर मान का मूल्यांकन केवल एक्सप्र के साथ तुलना करने से पहले सभी तुलना_एक्सपीआर मानों का मूल्यांकन करने के बजाय, एक्सपीआर से तुलना करने से पहले करता है। नतीजतन, ओरेकल कभी भी तुलना_एक्सपीआर का मूल्यांकन नहीं करता है यदि पिछली तुलना_एक्सपीआर एक्सपीआर के बराबर है। खोजे गए CASE एक्सप्रेशन के लिए, डेटाबेस यह निर्धारित करने के लिए प्रत्येक शर्त का मूल्यांकन करता है कि क्या यह सत्य है, और कभी भी किसी शर्त का मूल्यांकन नहीं करता है यदि पिछली स्थिति सत्य थी

अब केस और डिकोड स्टेटमेंट में अंतर देखें

(1) DECODE केवल अदिश मानों के साथ काम कर सकता है लेकिन CASE तार्किक ऑपरेटरों, विधेय और खोजने योग्य उपश्रेणियों के साथ काम कर सकता है।

हम जानते हैं कि डिकोड अदिश मानों के साथ काम कर सकता है। हम इसे लॉजिकल ऑपरेटरों के लिए उपयोग नहीं कर सकते हैं। इसका उपयोग करने के लिए हमें इसे अदिश मानों में बदलना होगा।

केस पूरी प्रक्रिया को आसान बनाता है। हम केस स्टेटमेंट में लॉजिकल ऑपरेटर का आसानी से उपयोग कर सकते हैं

SQL> select city
, case
when population < 100000
then 'Tier I'
when (population >=100000 and population < 200000)
then 'Tier II'
when (population >= 200000 and population < 300000)
then 'Tier III'
else 'TIER IV'
end City_Tier
from city_info
where rownum < 5;

CITY CITY_TIER
---------- ---------
XYX TIER I
XYZ TIER II
XZW TIER II

उपरोक्त को खोजने योग्य केस स्टेटमेंट कहा जाता है

(2) CASE PL/SQL निर्माण के रूप में काम कर सकता है लेकिन DECODE का उपयोग केवल SQL कथनों में किया जाता है। CASE को किसी फ़ंक्शन/प्रक्रिया के पैरामीटर के रूप में उपयोग किया जा सकता है।

उदाहरण

DECLARE

V_x VARCHAR2(10) := 'A';
V_y VARCHAR2(10);

BEGIN

V_y := CASE V_x
WHEN 'A' THEN 'Excellent'
WHEN 'B' THEN 'Good'
WHEN 'C' Then 'Average'
ELSE 'Poor'
END;

DBMS_OUTPUT.PUT_LINE(
'Grade V_x is '||V_y||'.'
);

END;
/

ग्रेड V_x उत्कृष्ट है।

(3) केस डेटाटाइप स्थिरता की अपेक्षा करता है, DECODE नहीं करता है।

select case 5 when 1 then '1'
2 when '2' then '2'
3 else '5'
4 end
5 from dual;
when '2' then '2'
*
ERROR at line 2:
ORA-00932: inconsistent datatypes: expected NUMBER got CHAR

(4) केस एएनएसआई एसक्यूएल का अनुपालन करता है। DECODE Oracle का स्वामित्व है।

(5) CASE DECODE की तुलना में ऑप्टिमाइज़र में तेज़ी से निष्पादित होता है।

(6) CASE एक स्टेटमेंट है जबकि DECODE एक फंक्शन है।

संबंधित लेख
Oracle sql Tutorials :सभी sql ट्यूटोरियल पाठों की सूची जिनका उपयोग sql में महारत हासिल करने और RDBMS (Oracle, MySql) डेटा प्रबंधन और हेरफेर में उपयोग करने के लिए किया जा सकता है
Oracle साक्षात्कार प्रश्न:शीर्ष 49 के लिए इस पृष्ठ को देखें। Oracle साक्षात्कार प्रश्न और उत्तर:मूल बातें, Oracle SQL साक्षात्कार में आपकी सहायता करने के लिए। इसके अलावा, इसे परिभाषित करने के विभिन्न तरीकों का पता लगाएं और इसे मूल्य प्रदान करें
Oracle SQL डेवलपर टूल:Oracle sql डेवलपर टूल, Oracle sql डेवलपर डाउनलोड कैसे करें, कैसे स्थापित करें, पर सभी जानकारी के लिए इस पृष्ठ को देखें।
ओरेकल डेट फंक्शन्स:ऑरेकल डेट फंक्शन्स, ऑरैकल डेट डिफरेंस इन ईयर्स, ऑरैकल डेट डिफरेंस इन डेज, ऑरेकल डेट डिफरेंस इन महीनों के लिए इस पोस्ट को देखें।
https://docs.oracle.com/cd /B19306_01/server.102/b14200/expressions004.htm

अनुशंसित पाठ्यक्रम

यहाँ Oracle SQL के लिए अच्छा Udemy कोर्स है
Oracle-Sql-Step-by-step :इस कोर्स में बेसिक sql, जॉइन, टेबल बनाना और इसकी संरचना को संशोधित करना, व्यू, यूनियन, यूनियन -ऑल और बहुत कुछ शामिल है। . SQL स्टार्टर के लिए एक बढ़िया कोर्स और अनिवार्य कोर्स
पूर्ण Oracle SQL प्रमाणन पाठ्यक्रम :यह उन लोगों के लिए एक अच्छा कोर्स है जो SQL डेवलपर कौशल के लिए नौकरी के लिए तैयार होना चाहते हैं। एक अच्छा समझाया गया कोर्स
Oracle SQL Developer:Essentials, Tips and Tricks :Oracle Sql डेवलपर टूल का उपयोग कई डेवलपर्स द्वारा किया जा रहा है। यह कोर्स हमें प्रभावी ढंग से इसका उपयोग करने और एक उत्पादक sql डेवलपर बनने के तरीके के बारे में ट्रिक्स और सबक देता है
Oracle SQL प्रदर्शन ट्यूनिंग मास्टरक्लास 2020 :प्रदर्शन ट्यूनिंग एक महत्वपूर्ण और सर्वाधिक मांग वाला कौशल है। इसके बारे में जानने और sql प्रदर्शन ट्यूनिंग शुरू करने के लिए यह एक अच्छा कोर्स है


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ओरेकल ब्लॉब टेक्स्ट सर्च

  2. डेटाबेस पैचसेट प्राप्त करें

  3. Oracle के लिए JDBC का उपयोग करके ResultSet को पुनरावृत्त करने में लगभग 16s में बहुत समय लगता है?

  4. जेडीबीसी रेडीस्टेटमेंट में पसंद की क्वेरी का उपयोग नहीं कर सकते हैं?

  5. OracleCommand SQL पैरामीटर्स बाइंडिंग