TOP

SQL-पाठ 4. डेटा फ़िल्टरिंग (WHERE)

ज्यादातर मामलों में, सभी रिकॉर्ड प्राप्त करना आवश्यक नहीं है, बल्कि केवल वे रिकॉर्ड प्राप्त करना आवश्यक है जो कुछ मानदंडों को पूरा करते हैं। इसीलिए नमूना फ़िल्टरिंग के लिए SQL में एक विशेष ऑपरेटर WHERE है।


1. WHERE ऑपरेटर द्वारा सरल फ़िल्टरिंग।

आइए अपनी तालिका से चयन करें, उदाहरण के लिए, ऐसे रिकॉर्ड जो केवल एक निश्चित उत्पाद से संबंधित हैं। ऐसा करने के लिए, हम एक अतिरिक्त चयन पैरामीटर निर्दिष्ट करते हैं जो उत्पाद कॉलम द्वारा मानों को फ़िल्टर करेगा।

पाठ मानों के चयन के लिए क्वेरी का एक उदाहरण:

Run SQLSELECT * 
FROM Sumproduct 
WHERE Product = 'Bikes'

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

संख्यात्मक मानों के चयन के लिए क्वेरी का एक उदाहरण:

Run SQLSELECT * 
FROM Sumproduct 
WHERE Amount > 40000 
ORDER BY Amount

इस उदाहरण में, हमने उन रिकॉर्ड्स का चयन किया जिनमें बिक्री राजस्व $40,000 से अधिक था और, इसके अतिरिक्त, सभी रिकॉर्ड्स को राशि फ़ील्ड के अनुसार आरोही क्रम में क्रमबद्ध किया।

नीचे दी गई तालिका SQL द्वारा समर्थित सशर्त कथनों को सूचीबद्ध करती है:

संचालन चिह्न कीमत
= के बराबर है
<> असमान
< कम
<= से कम या बराबर
> अधिक
>= इससे बड़ा या इसके बराबर
BETWEEN दो मूल्यों के बीच
IS NULL कोई रिकॉर्ड नहीं है

2. मूल्य सीमा के अनुसार फ़िल्टर करना (BETWEEN)

ऑपरेटर BETWEEN का उपयोग एक निश्चित सीमा में मौजूद डेटा का चयन करने के लिए किया जाता है। अगली क्वेरी में, राशि फ़ील्ड में $1,000 और $2,000 के बीच के सभी मानों का चयन किया जाएगा।

Run SQLSELECT * 
FROM Sumproduct 
WHERE Amount BETWEEN 1000 AND 2000

सॉर्टिंग का क्रम अनुरोध में फ़ील्ड के क्रम पर निर्भर करेगा। यानी, हमारे मामले में, डेटा को पहले राशि कॉलम द्वारा और फिर City द्वारा क्रमबद्ध किया जाएगा।

3. खाली रिकॉर्ड का चयन (IS NULL)

SQL में, खाली रिकॉर्ड चुनने के लिए एक विशेष ऑपरेटर होता है (जिसे NULL कहा जाता है)। रिक्त प्रविष्टि तालिका में कोई भी कक्ष है जिसमें कोई वर्ण दर्ज नहीं किया गया है। यदि सेल में 0 या रिक्त स्थान दर्ज किया गया है, तो यह माना जाता है कि फ़ील्ड भर गई है।

SELECT * 
FROM Sumproduct 
WHERE Amount IS NULL

उपरोक्त उदाहरण में, हमने जानबूझकर NULL ऑपरेटर को प्रदर्शित करने के लिए राशि फ़ील्ड में दो मान हटा दिए हैं।

4. उन्नत फ़िल्टरिंग (AND, OR)

SQL भाषा केवल एक शर्त के अनुसार फ़िल्टर करने तक ही सीमित नहीं है, अपने स्वयं के उद्देश्यों के लिए आप कई मानदंडों के अनुसार एक साथ डेटा का चयन करने के लिए काफी जटिल निर्माणों का उपयोग कर सकते हैं। इसके लिए, SQL में अतिरिक्त ऑपरेटर हैं जो WHERE ऑपरेटर की क्षमताओं का विस्तार करते हैं। ऐसे ऑपरेटर हैं: AND, OR, IN, NOT। हम इन ऑपरेटरों के संचालन के कई उदाहरण देंगे।

Run SQLSELECT * 
FROM Sumproduct 
WHERE Amount > 40000 AND City = 'Toronto'
Run SQLSELECT * 
FROM Sumproduct 
WHERE Month = 'April' OR Month = 'March'

आइए AND और OR ऑपरेटरों को संयोजित करें। ऐसा करने के लिए, हम साइकिल (बाइक) और स्केट्स (स्केट्स) का चयन करेंगे, जो मार्च में बेचे गए थे।

Run SQLSELECT * 
FROM Sumproduct 
WHERE Product = 'Bikes' OR Product = 'Skates' AND Month = 'March'

हम देखते हैं कि हमारे नमूने में कई मूल्य शामिल थे (मार्च के अलावा, जनवरी, फरवरी और अप्रैल भी)। कारण क्या है? और तथ्य यह है कि SQL में कमांड निष्पादन प्राथमिकताएँ हैं। अर्थात्, AND ऑपरेटर की प्राथमिकता OR ऑपरेटर से अधिक है, इसलिए मार्च में बेचे गए स्केट्स वाले रिकॉर्ड पहले चुने गए, उसके बाद साइकिल से संबंधित सभी रिकॉर्ड चुने गए।

इसलिए, सही नमूना प्राप्त करने के लिए, हमें कमांड निष्पादन प्राथमिकताओं को बदलने की आवश्यकता है। इसके लिए हम गणित की तरह कोष्ठक का उपयोग करेंगे। फिर, कोष्ठक में ऑपरेटरों को पहले संसाधित किया जाएगा, और फिर बाकी सभी को।

Run SQLSELECT * 
FROM Sumproduct 
WHERE (Product = 'Bikes' OR Product = 'Skates') AND Month = 'March'

5. उन्नत फ़िल्टरिंग (IN ऑपरेटर)

Run SQLSELECT * 
FROM Sumproduct 
WHERE ID IN (4, 12, 58, 67)

IN ऑपरेटर OR के समान कार्य करता है, लेकिन इसके कई फायदे हैं:

  • लंबी सूचियों के साथ काम करते समय, IN वाले वाक्यों को पढ़ना आसान होता है;
  • कम ऑपरेटरों का उपयोग किया जाता है, जो अनुरोध प्रसंस्करण को गति देता है;
  • IN का सबसे महत्वपूर्ण लाभ यह है कि इसके निर्माण में आप अतिरिक्त निर्माण SELECT का उपयोग कर सकते हैं, जो
  • відкриває великі можливості для створення складних підзапитів.

    6. उन्नत फ़िल्टरिंग (NOT ऑपरेटर)

    Run SQLSELECT * 
    FROM Sumproduct 
    WHERE NOT City IN ('Toronto', 'Montreal')
    

    कीवर्ड NOT आपको नमूने से अनावश्यक मान हटाने की अनुमति देता है। साथ ही, इसकी विशेषता यह है कि इसे फ़िल्टरिंग में शामिल कॉलम के नाम से पहले रखा जाता है, बाद में नहीं।