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

शुरुआती के लिए SQL COALESCE फ़ंक्शन के साथ NULL मानों को प्रभावी ढंग से संभालना

इस लेख का उद्देश्य शुरुआती लोगों को T-SQL COALESCE फ़ंक्शन की मूल बातें और NULL मानों को संभालने के लिए इसके अनुप्रयोग को समझने में मदद करना है। इसके अतिरिक्त, इस फ़ंक्शन के कुछ सरल उदाहरणों को लागू करके पाठकों को व्यावहारिक अनुभव प्राप्त होगा।

हम डेटाबेस विश्लेषणात्मक समस्याओं को हल करने में टी-एसक्यूएल कार्यों के महत्व पर भी प्रकाश डालेंगे।

SQL COALESCE फ़ंक्शन के बारे में

सबसे पहले, आइए इस फ़ंक्शन को SQL शुरुआत के दृष्टिकोण से समझने का प्रयास करें।

SQL COALESCE फ़ंक्शन क्या है?

यह एक T-SQL फ़ंक्शन है जो कई इनपुट स्वीकार करता है लेकिन पहला इनपुट मान देता है जो NULL नहीं है

इनपुट क्या है?

एक इनपुट (जिसे एक तर्क भी कहा जाता है) उस फ़ंक्शन द्वारा अपना काम करने के लिए आवश्यक फ़ंक्शन को आपूर्ति की गई कोई भी चीज़ हो सकती है।

उदाहरण के लिए, हमारे पास SUM() . नामक एक फ़ंक्शन है , जो किन्हीं दो संख्याओं को जोड़ता है X और वाई . ये संख्याएँ फ़ंक्शन के इनपुट या तर्क हैं।

एक इनपुट या तर्क एक व्यंजक हो सकता है।

अभिव्यक्ति क्या है?

एक व्यंजक एक स्थिरांक, एक चर या एक स्तंभ हो सकता है जो अंततः एक एकल डेटा मान लौटाता है।

हालांकि, हम विशेष रूप से डेटाबेस के नजरिए से कॉलम पर ध्यान केंद्रित कर रहे हैं, जिसमें मान हो भी सकते हैं और नहीं भी।

शून्य मान क्या है?

तालिका के कॉलम को अभी तक असाइन किया जाने वाला कोई भी मान NULL . है मूल्य। दूसरे शब्दों में, नल का अर्थ है तालिका में किसी स्तंभ का आरंभिक मान

एक पूर्ण मूल्य क्या नहीं है?

यह NULL मान के विपरीत है। यदि NULL मान एक असाइन नहीं किया गया या अप्रारंभीकृत स्तंभ मान है, तो NOT NULL मान एक असाइन किया गया या आरंभिक स्तंभ मान है

उदाहरण के लिए, हमारे पास दो कॉलम हैं, ExamId और परीक्षा परिणाम , एक टेबल में।

एक उपयोगकर्ता ExamId=1 . सेट करता है , लेकिन ExamResult . को कोई मूल्य प्रदान नहीं करता है कॉलम। फिर परीक्षा परिणाम इसमें NULL होगा। वैकल्पिक रूप से, परीक्षा आईडी है शून्य नहीं मान क्योंकि यह 1 है।

COALESCE कैसे कार्य करता है?

यह एक ऐसा फ़ंक्शन है जो कॉलम का पहला NOT NULL मान दिखाता है इस फ़ंक्शन को दिए गए कॉलम की सूची में। हालांकि, हम व्यंजकों के किसी भी सेट को पास कर सकते हैं, जो तालिका के स्तंभों की सूची या इस फ़ंक्शन के लिए संख्याओं का एक साधारण सेट (स्थिरांक) या चर हो सकता है।

वाक्यविन्यास

COALESCE फ़ंक्शन का SQL सिंटैक्स (Microsoft दस्तावेज़ के अनुसार) इस प्रकार है:

COALESCE ( expression [ ,...n ] )   

हम पहले ही एक व्यंजक को परिभाषित कर चुके हैं ताकि वह एक ही प्रकार के किसी भी भाव को स्वीकार कर सके।

संगतता

Microsoft दस्तावेज़ीकरण के अनुसार, यह फ़ंक्शन निम्न सहित कई Microsoft SQL तकनीकों के साथ संगत है:

  1. SQL सर्वर के सभी समर्थित संस्करण।
  2. Azure SQL डेटाबेस (SQL सर्वर क्लाउड संस्करण)।

ध्यान दें कि मैंने संदर्भ को सरल रखने के लिए जानबूझकर कुछ अन्य SQL सर्वर तकनीकों को बाहर रखा है।

COALESCE फ़ंक्शन के सरल उदाहरण

आइए एक नमूना डेटाबेस सेट करें जहां हम अपने उदाहरण चला सकते हैं। इसके खिलाफ अपने उदाहरण चलाने के लिए 'CoalesceDB' नामक एक नया डेटाबेस बनाएं। निम्नलिखित कोड का प्रयोग करें:

-- Create sample database
Create DATABASE CoalesceDB;
GO

'नंबर के साथ एक NULL' उदाहरण

यदि हम किसी भी क्रम में COALESCE फ़ंक्शन के लिए एक संख्या और एक NULL मान पास करते हैं, तो यह संख्या वापस कर देगा क्योंकि यह पहला NOT NULL मान है ।

नमूना डेटाबेस के विरुद्ध टी-एसक्यूएल स्क्रिप्ट का प्रयोग निम्नानुसार करें:

-- Use the sample database
USE CoalesceDB

-- Simple COALESCE example with number and NULL inputs (arguments) 
SELECT COALESCE(NULL,1) as COALESCE_Result

आपको निम्नलिखित परिणाम मिलने चाहिए:

अगर हम तर्कों के क्रम को इस तरह से उलट दें कि नंबर 1 पहले आता है, और NULL दूसरा तर्क बन जाता है, तब भी हमें वही परिणाम मिलता है:

-- Simple COALESCE example with Number and NULL while number being first input (arguments) 
SELECT COALESCE(1,NULL) as COALESCE_Result_Number_First

'स्ट्रिंग के साथ एक NULL' उदाहरण

यहां हम परिणाम देखने के लिए इस फ़ंक्शन के लिए एक स्ट्रिंग (चरित्र प्रकार डेटा) और एक NULL पास करेंगे। निम्न स्क्रिप्ट चलाएँ:

-- Simple COALESCE example with string and NULL inputs (arguments) 
SELECT COALESCE(NULL,'Second input') as COALESCE_Result

परिणाम नीचे हैं:

इसी तरह, ऑर्डर को उलटने से हमें पिछले उदाहरण के समान ही परिणाम मिलेंगे।

'दो नंबर और एक NULL' उदाहरण

आइए देखें COALESCE फ़ंक्शन व्यवहार यदि हम इस फ़ंक्शन के लिए दो संख्याओं और एक NULL मान सहित तीन इनपुट (तर्क) की आपूर्ति करते हैं।

उदाहरण के लिए दो संख्याओं और एक NULL मान के साथ निम्न स्क्रिप्ट चलाएँ:

-- Simple COALESCE example with two numbers and NULL inputs (arguments) 
SELECT COALESCE(NULL,2,3) as COALESCE_Result

आउटपुट इस प्रकार है:

पहले . के बाद से शून्य मान 2 नहीं है , COALESCE फ़ंक्शन ने इसके बाद के मान को अनदेखा करते हुए इसे वापस कर दिया है।

आइए अब निम्नलिखित स्क्रिप्ट के साथ तर्कों की सूची में संख्याओं के क्रम को उलट दें:

-- Simple COALESCE example with two numbers reversed and NULL inputs (arguments) 
SELECT COALESCE(NULL,3,2) as COALESCE_Result 

परिणाम सेट नीचे है:

'संख्या, स्ट्रिंग, और एक NULL' उदाहरण

यहां हम एक संख्या, स्ट्रिंग और एक NULL मान इनपुट करके तर्क प्रकारों को मिलाते हैं। निम्नलिखित कोड टाइप करें:

-- Simple COALESCE example with one number one string and NULL inputs (arguments) 
SELECT COALESCE(NULL,1,'Home') as COALESCE_Result

परिणाम इस प्रकार हैं:

हालांकि COALESCE फ़ंक्शन सही परिणाम दिखाता है, पहला NOT NULL मान, जो कि 1 है, को चुनना, यह एक अच्छा उदाहरण नहीं है। हमें उसी प्रकार के तर्कों की आपूर्ति करनी चाहिए। यह या तो संख्या या वर्ण या किसी अन्य प्रकार का व्यंजक है।

यदि हम स्ट्रिंग 'होम' को पहले तर्क के रूप में और संख्या 1 को दूसरे तर्क के रूप में आपूर्ति करते हैं, तो यह एक त्रुटि का कारण होगा। इसलिए भाव एक ही प्रकार के होने चाहिए।

आइए दो NOT NULL तर्कों को आपस में बदल कर इसे आजमाएँ:

-- Simple COALESCE example with one number one string first and NULL inputs (arguments) 
SELECT COALESCE(NULL,'Home',1) as COALESCE_Result

आउटपुट नीचे है:

'दो स्ट्रिंग्स के साथ एक NULL' उदाहरण

यदि हम दो स्ट्रिंग मानों के बाद एक NULL मान इनपुट करते हैं, तो यह पहली स्ट्रिंग लौटाएगा क्योंकि यह NULL नहीं है। यह दूसरे को छोड़ देगा। इसे क्रिया में देखने के लिए निम्न स्क्रिप्ट चलाएँ:

-- Simple COALESCE example with two strings and NULL inputs (arguments) 
SELECT COALESCE(NULL,'Home','Office') as COALESCE_Result

परिणाम सेट नीचे है:

उपरोक्त उदाहरण साबित करता है कि सटीक परिणामों के लिए COALESCE फ़ंक्शन में समान प्रकार के तर्कों की आपूर्ति की आवश्यकता होती है। एक तर्क स्वयं एक संख्या, स्ट्रिंग, चर या तालिका का एक स्तंभ हो सकता है।

रियल-केस उदाहरण

अब हम COALESCE फ़ंक्शन का एक साधारण वास्तविक-केस परिदृश्य लेते हैं जो NULL मानों को प्रभावी ढंग से संभालता है।

एक आईटी सेवा प्रदाता कंपनी अपने ग्राहकों के विवरण को निम्नलिखित दो श्रेणियों में संग्रहीत करती है:

  1. व्यावसायिक ग्राहक।
  2. व्यक्तिगत ग्राहक।

एक व्यावसायिक ग्राहक एक कंपनी का प्रतिनिधित्व करने वाला ग्राहक होता है। वे कंपनी (व्यवसाय) की ओर से ऑर्डर देते हैं। एक व्यक्तिगत ग्राहक व्यक्तिगत रूप से और व्यक्तिगत उपयोग के लिए सेवाओं का आदेश देने वाला व्यक्ति होता है।

व्यावसायिक ग्राहकों के संपर्क Work_Email कॉलम के अंतर्गत ग्राहक तालिका में हैं। व्यक्तिगत ग्राहकों के ईमेल पते तालिका के Personal_Email कॉलम में हैं।

इसलिए, यह प्रकार के आधार पर प्रत्येक ग्राहक के लिए Work_Email या Personal_Email कॉलम को पॉप्युलेट करता है।

ग्राहक तालिका बनाएं

हम CoalesceDB नमूना डेटाबेस में 'ग्राहक' नामक एक तालिका बनाएंगे। निम्न स्क्रिप्ट टाइप करें:

-- Using the sample database
Use CoalesceDB

-- Create Customer table
CREATE TABLE Customer
(CustomerId INT IDENTITY(1,1),
Work_Email VARCHAR(250) NULL,
Personal_Email VARCHAR(250) NULL,
CONSTRAINT [PK_Customer] PRIMARY KEY ([CustomerId]) 
)

ग्राहक तालिका भरें

आइए हम निम्नलिखित स्क्रिप्ट का उपयोग करके ग्राहक तालिका को पॉप्युलेट करें:

-- Using the sample database
Use CoalesceDB

-- Populate Customer table
INSERT INTO Customer
(Work_Email,Personal_Email)
values
('[email protected]',NULL),
(NULL,'[email protected]'),
(NULL,'[email protected]'),
('[email protected]',NULL),
('[email protected]',NULL),
(NULL,'[email protected]')

-- Important: Please note the above email addresses are for demo purposes only

ग्राहक तालिका देखें

निम्न स्क्रिप्ट चलाएँ:

-- View customer table
SELECT [CustomerId], [Work_Email], [Personal_Email] FROM dbo.Customer

आउटपुट इस प्रकार है:

COALESCE का उपयोग करके सभी उपलब्ध संपर्कों को देखना

अब, यदि हम NULLs को अनदेखा करते हुए सभी ग्राहकों के सभी उपलब्ध संपर्कों को देखना चाहते हैं, तो हम COALESCE फ़ंक्शन का उपयोग करके इसे प्राप्त कर सकते हैं:

--Viewing all available contacts using COALESCE 
SELECT C.CustomerId,COALESCE(Work_Email,Personal_Email) AS Email
FROM dbo.Customer C

परिणाम हैं:

करने के लिए चीज़ें

बधाई हो! आपके पास COALESCE फ़ंक्शन की मूल बातें हैं और NULL मानों को प्रभावी ढंग से संभालने में इसके उपयोग को समझते हैं।

अब, आप शायद नए कौशल को और अधिक प्रशिक्षित करना चाहें:

  1. ग्राहक तालिका में दो और कॉलम, Work_Phone और Personal_Phone बनाने और पॉप्युलेट करने का प्रयास करें। देखें कि क्या आप रियल-केस उदाहरण का उपयोग करके इन स्तंभों में NULL मानों को संभाल सकते हैं।
  2. आपको ग्राहकों के सभी उपलब्ध ईमेल संपर्कों को दिखाने के लिए SQL दृश्य बनाने का प्रयास करें।
  3. फ़ंक्शन में सभी चार कॉलम (Work_Email, Personal_Email, Work_Phone, और Personal_Phone) को पास करने का प्रयास करें। बेशक, आपको यह सुनिश्चित करने की ज़रूरत है कि उनके पास एक ही डेटा प्रकार है। परिणाम स्वयं देखें।

यह भी पढ़ें

SQL COALESCE फ़ंक्शन का व्यावहारिक उपयोग

SQL COALESCE फ़ंक्शन पर 5 ज्वलंत प्रश्नों के शीर्ष उत्तर


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एक्लिप्स आईडीई में जावा 9 के साथ एक मॉड्यूल विकसित करना, भाग 2

  2. सांख्यिकी के स्वचालित अपडेट क्वेरी प्रदर्शन को कैसे प्रभावित कर सकते हैं

  3. sp_rename प्रक्रिया के साथ अनुक्रमणिका का नाम बदलना

  4. एसक्यूएल एएस:उपयोग, उदाहरण, और यह आपको सबसे अच्छा कैसे लाभ पहुंचा सकता है

  5. क्या मुझे NOT IN, OUTER APPLY, LEFT OUTER JOIN, EXCEPT, या NOT EXISTS का उपयोग करना चाहिए?