सिंगल-रो फंक्शंस का उपयोग करना

आउटपुट को अनुकूलित करने के लिए एकल पंक्ति फ़ंक्शन का उपयोग करना

Oracle SQL इन-बिल्ट फ़ंक्शंस की एक समृद्ध लाइब्रेरी की आपूर्ति करता है जिसे विभिन्न कार्यों के लिए नियोजित किया जा सकता है। फ़ंक्शंस की आवश्यक क्षमताएं स्ट्रिंग, इन-स्ट्रिंग या प्रतिस्थापन संचालन, संख्यात्मक डेटा पर गणितीय संगणना और दिनांक प्रकार के मूल्यों पर दिनांक संचालन के मामले रूपांतरण हो सकती हैं। SQL फ़ंक्शंस वैकल्पिक रूप से उपयोगकर्ता से तर्क लेते हैं और अनिवार्य रूप से एक मान लौटाते हैं।

व्यापक श्रेणी में, दो प्रकार के कार्य हैं: -

Single Row functions- सिंगल रो फंक्शन वे होते हैं जो सिंगल रो पर काम करते हैं और प्रति पंक्ति एक आउटपुट देते हैं। उदाहरण के लिए, लंबाई और केस रूपांतरण कार्य एकल पंक्ति फ़ंक्शन हैं।

Multiple Row functions - एकाधिक पंक्ति फ़ंक्शन पंक्तियों के समूह पर काम करते हैं और पंक्तियों के पूर्ण सेट के लिए एक परिणाम देते हैं। इन्हें ग्रुप फंक्शन्स के नाम से भी जाना जाता है।

एकल पंक्ति कार्य

एकल पंक्ति फ़ंक्शन वर्ण फ़ंक्शन, संख्यात्मक कार्य, दिनांक फ़ंक्शन और रूपांतरण फ़ंक्शन हो सकते हैं। ध्यान दें कि इन कार्यों का उपयोग डेटा आइटम में हेरफेर करने के लिए किया जाता है। इन कार्यों को एक या अधिक इनपुट तर्कों की आवश्यकता होती है और प्रत्येक पंक्ति पर काम करते हैं, जिससे प्रत्येक पंक्ति के लिए एक आउटपुट मान वापस आ जाता है। तर्क एक स्तंभ, शाब्दिक या एक अभिव्यक्ति हो सकता है। एकल पंक्ति फ़ंक्शन का उपयोग SELECT स्टेटमेंट, WHERE और ORDER BY क्लॉज में किया जा सकता है। एकल पंक्ति कार्य हो सकते हैं -

  • General functions- आमतौर पर NULL हैंडलिंग फ़ंक्शंस होते हैं। श्रेणी के अंतर्गत कार्य NVL, NVL2, NULLIF, COALESCE, CASE, DECODE हैं।

  • Case Conversion functions- चरित्र इनपुट स्वीकार करता है और एक चरित्र मूल्य देता है। श्रेणी के अंतर्गत कार्य UPPER, LOWER और INITCAP हैं।

    • UPPER फ़ंक्शन ऊपरी मामले में एक स्ट्रिंग को परिवर्तित करता है।

    • लोअर फंक्शन एक स्ट्रिंग को लोअर केस में परिवर्तित करता है।

    • INITCAP फ़ंक्शन केवल स्ट्रिंग के प्रारंभिक अक्षर को ऊपरी मामले में परिवर्तित करता है।

  • Character functions- चरित्र इनपुट स्वीकार करता है और संख्या या चरित्र मूल्य देता है। श्रेणी के अंतर्गत कार्य CONCAT, LENGTH, SUBSTR, INSTR, LPAD, RPAD, TRIM और REPLACE हैं।

    • CONCAT फ़ंक्शन दो स्ट्रिंग मानों को मिलाता है।

    • LENGTH फ़ंक्शन इनपुट स्ट्रिंग की लंबाई लौटाता है।

    • SUBSTR फ़ंक्शन दिए गए प्रारंभ बिंदु से अंतिम बिंदु तक स्ट्रिंग का एक भाग लौटाता है।

    • INSTR फ़ंक्शन किसी वर्ण या किसी दिए गए स्ट्रिंग में एक स्ट्रिंग की संख्यात्मक स्थिति देता है।

    • LPAD और RPAD दिए गए तार को दिए गए अक्षर के साथ एक विशिष्ट लंबाई तक पैड करता है।

    • TRIM फंक्शन स्टार्ट या एंड से स्ट्रिंग इनपुट को ट्रिम करता है।

    • REPLACE फ़ंक्शन दिए गए वर्ण के साथ इनपुट स्ट्रिंग से वर्णों को बदलता है।

  • Date functions- तिथि अंकगणितीय संक्रियाएँ दिनांक या संख्यात्मक मान लौटाती हैं। श्रेणी के अंतर्गत कार्य MONTHS_BETWEEN, ADD_MONTHS, NEXT_DAY, LAST_DAY, ROUND और TRUNC हैं।

    • MONTHS_BETWEEN फ़ंक्शन दो तिथियों के बीच महीनों की गिनती लौटाता है।

    • ADD_MONTHS फ़ंक्शन किसी इनपुट दिनांक में कई महीनों की संख्या जोड़ते हैं।

    • NEXT_DAY फ़ंक्शन निर्दिष्ट तिथि के अगले दिन लौटाता है।

    • LAST_DAY फ़ंक्शन इनपुट तिथि के महीने के अंतिम दिन देता है।

    • ROUND और TRUNC फ़ंक्शन का उपयोग दिनांक मान को राउंड और ट्रंक करने के लिए किया जाता है।

  • Number functions- संख्यात्मक इनपुट को स्वीकार करता है और संख्यात्मक मान लौटाता है। श्रेणी के अंतर्गत कार्य ROUND, TRUNC और MOD हैं।

    • नंबर मान को राउंड और ट्रंक करने के लिए ROUND और TRUNC फ़ंक्शन का उपयोग किया जाता है।

    • MOD का उपयोग दो संख्याओं के बीच विभाजन के शेष ऑपरेशन को वापस करने के लिए किया जाता है।

रेखांकन

सामान्य कार्य

नीचे चयन क्वेरी NVL फ़ंक्शन के उपयोग को प्रदर्शित करता है।

SELECT first_name, last_name, salary, NVL (commission_pct,0) 
FROM employees
WHERE rownum < 5;

FIRST_NAME           LAST_NAME                     SALARY NVL(COMMISSION_PCT,0)
-------------------- ------------------------- ---------- ---------------------
Steven               King                           24000                     0
Neena                Kochhar                        17000                     0
Lex                  De Haan                        17000                     0
Alexander            Hunold                          9000                     0

केस रूपांतरण कार्य

नीचे का चयन क्वेरी केस रूपांतरण कार्यों के उपयोग को दर्शाता है।

SELECT UPPER (first_name), INITCAP (last_name), LOWER (job_id)
FROM employees
WHERE rownum < 5;

UPPER(FIRST_NAME)    INITCAP(LAST_NAME)        LOWER(JOB_
-------------------- ------------------------- ----------
STEVEN               King                      ad_pres
NEENA                Kochhar                   ad_vp
LEX                  De Haan                   ad_vp
ALEXANDER            Hunold                    it_prog

चरित्र कार्य

नीचे दी गई चयन क्वेरी दो स्ट्रिंग मानों को जोड़ने के लिए CONCAT फ़ंक्शन के उपयोग को दर्शाता है।

SELECT CONCAT (first_name, last_name) 
FROM employees
WHERE rownum < 5;

CONCAT(FIRST_NAME,LAST_NAME)
--------------------------------
EllenAbel
SundarAnde
MozheAtkinson
DavidAustin

नीचे दी गई चयन क्वेरी SUBSTR और INSTR फ़ंक्शन के उपयोग को प्रदर्शित करती है। SUBSTR फ़ंक्शन इनपुट स्ट्रिंग के हिस्से को 1 स्थान से 5 वें स्थान पर लौटाता है। INSTR फ़ंक्शन पहले नाम में वर्ण 'a' की संख्यात्मक स्थिति देता है।

SELECT SUBSTR (first_name,1,5), INSTR (first_name,'a')
FROM employees
WHERE rownum < 5;

SUBST INSTR(FIRST_NAME,'A')
----- ---------------------
Ellen                     0
Sunda                     5
Mozhe                     0
David                     2

नीचे दी गई चयन क्वेरी कर्मचारी और नौकरी की जानकारी को प्रिंट करने के लिए LPAD और RPAD के उपयोग को प्रदर्शित करती है।

SELECT RPAD(first_name,10,'_')||LPAD (job_id,15,'_')
FROM employees
WHERE rownum < 5;

RPAD(FIRST_NAME,10,'_')||
-------------------------
Steven____________AD_PRES
Neena_______________AD_VP
Lex_________________AD_VP
Alexander_________IT_PROG

संख्या कार्य

नीचे चयन क्वेरी ROUND और TRUNC फ़ंक्शंस के उपयोग को प्रदर्शित करता है।

SELECT ROUND (1372.472,1)
FROM dual;

ROUND(1372.472,1)
-----------------
           1372.5

SELECT TRUNC (72183,-2)
FROM dual;

TRUNC(72183,-2)
---------------
          72100

तिथि अंकगणितीय ऑपरेशन

नीचे दी गई SELECT क्वेरी एक तिथि अंकगणितीय कार्य दर्शाती है, जहाँ कर्मचारी की दिनांक और sysdate का अंतर होता है।

SELECT employee_id, (sysdate - hire_date) Employment_days
FROM employees
WHERE rownum < 5;

EMPLOYEE_ID EMPLOYMENT_DAYS
----------- ---------------
        100      3698.61877
        101      2871.61877
        102      4583.61877
        103      2767.61877

दिनांक कार्य

नीचे दी गई SELECT क्वेरी MONTHS_BETWEEN, ADD_MONTHS, NEXT_DAY और LAST_DAY फ़ंक्शन का उपयोग करती है।

SELECT employee_id, MONTHS_BETWEEN (sysdate, hire_date) Employment_months
FROM employees
WHERE rownum < 5;

EMPLOYEE_ID EMPLOYMENT_MONTHS
----------- -----------------
        100        121.504216
        101        94.3751837
        102        150.633248
        103        90.9558289

SELECT ADD_MONTHS (sysdate, 5), NEXT_DAY (sysdate), LAST_DAY (sysdate)
FROM dual;

ADD_MONTH NEXT_DAY( LAST_DAY(
--------- --------- ---------
01-JAN-14 05-AUG-13 31-AUG-13