इस WHERE क्लॉज में% क्या है?


13

मैं प्रशिक्षण कर रहा हूं और स्क्रिप्ट में से एक में निम्नलिखित कमांड है:

SELECT SUM(Col2) FROM clust_table WHERE Col1 % 3 = 1

मैं जानना चाहूंगा कि यह स्निपेट व्हेयर क्लॉज में क्या है: Col1 % 3 = 1

मैंने इंटरनेट पर कुछ शोध किया और इस कमांड के बारे में कोई संदर्भ नहीं पाया।

जवाबों:


32

इसका उपयोग मोडुलो ऑपरेटर के रूप में किया जा रहा है; दूसरे द्वारा विभाजित संख्या के शेष को वापस करना।

आपके उदाहरण में, WHERE क्लॉज़ केवल उन परिणामों को सीमित कर रहा है, जहाँ Col1 मान 3 से विभाजित होता है, शेष 1. (जैसे 4,7,10, आदि)।



6

SQL में% का उपयोग दो अलग-अलग स्वरूपों में किया जा सकता है। यदि यह एक स्ट्रिंग में उपयोग किया जाता है LIKEतो यह एक वाइल्ड कार्ड है, उदाहरण के लिए:

WHERE col_name like '%test%'

इसका मतलब होगा कि इसमें वह सब कुछ मिलेगा, col_nameजिसमें "परीक्षण" शब्द है।

लेकिन इस विशिष्ट ऑपरेशन में% प्रतीक का उपयोग मोडुलो ऑपरेटर के रूप में किया जा रहा है। मोडुलो (आमतौर पर MODबटन के रूप में दिखाया गया कैलकुलेटर पर ) शेष बचता है। यह एक उपयोगी उपकरण हो सकता है यदि डेटा प्रदर्शित करने के लिए लूप का उपयोग किया जाता है और आप कॉलम गिनना चाहते हैं - मैंने हाल ही में एक वेब पेज को ड्रा करते समय मोडुलो ऑपरेटर का उपयोग किया है। मेरा PHP में था, लेकिन यह एक उदाहरण है:

$count = 0 ;
$records = array () ;
for ( $a = 0 ; $a < 100 ; $a++ )
    $records[$a] = $a ;
foreach ( $records as $record )
{
    if ( $count % 3 == 0 )
        echo '<p>Three items</p>' ;
    if ( $count % 10 == 0 )
        echo '<p>Ten items</p>' ;
    echo '<p>'.$record.'</p>' ;
    $count++ ;
}

यह मूल रूप से 1 - 100 और हर तीन वस्तुओं को "तीन आइटम" आउटपुट करेगा, और यह हर दस आइटम "दस आइटम" का उत्पादन करेगा क्योंकि कोई भी अन्य संख्या मान लौटाएगी जैसे:

5 / 10 = 0.5 (5 % 10 = 5)
2 / 3 = 0.666... (2 % 3 = 2)
50 / 10 = 5.0 (50 % 10 = 0)
9 / 3 = 3.0 (9 % 3 = 0)

2
2% 3 = 2, 6 नहीं .. मोडुलो शेष तब वापस करता है जब आप जिस संख्या को विभाजित कर रहे हैं वह उस संख्या से बड़ा है जिसे आप विभाजित कर रहे हैं। दशमलव द्वारा विभाजन के अनुगामी दशमलव का मॉड के आउटपुट पर कोई असर नहीं होता है।
निक डेविट

और SQL में select 5 / 10 ;देंगे 0, नहीं0.5
ypercube

2

अन्य उत्तर सही हैं। यह मॉडुलो ऑपरेटर है, जो शेष भाग को लौटाता है।

  • 0% 3 = 0
  • 1% 3 = 1
  • 2% 3 = 2
  • 3% 3 = 0
  • 4% 3 = 1
  • 5% 3 = 2
  • ...

लेकिन मुझे लगता है कि यह जोड़ने में मददगार हो सकता है कि यह एक प्रासंगिक ऑपरेशन क्यों है और यह कभी-कभी उपयोगी क्यों हो सकता है।

X % 2क्योंकि यह लौटाता है यदि संख्या सम या विषम है सबसे अधिक इस्तेमाल किया जाता है।

कल्पना करें कि आप सभी स्तंभों को सम संख्याओं के साथ चुनना चाहते हैं, आप कर सकते हैं:

SELECT * FROM table WHERE column % 2 = 0

यदि आप विषम संख्या वाले सभी स्तंभों का चयन करना चाहते हैं, तो आप कर सकते हैं:

SELECT * FROM table WHERE column % 2 = 1

अन्य उपयोग के मामले उत्पन्न हो सकते हैं, उदाहरण के लिए, आप उनकी इकाई द्वारा सभी स्तंभों को फ़िल्टर करना चाहते हैं, आप इसका उपयोग उन सभी संख्याओं को प्राप्त करने के लिए कर सकते हैं, जिनकी इकाइयों में शून्य है:

SELECT * FROM table WHERE column % 10 = 0
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.