मैंने एक आवेदन पर एक लॉग फ़ाइल में एक क्वेरी चलाया। और इसमें एक क्वेरी शामिल है:आप SQL में WHERE 1 = 0 कथन का उपयोग क्यों करेंगे?
SELECT ID FROM CUST_ATTR49 WHERE 1=0
ऐसी कोई क्वेरी का उपयोग क्या है जो कुछ भी वापस करने के लिए बाध्य नहीं है?
मैंने एक आवेदन पर एक लॉग फ़ाइल में एक क्वेरी चलाया। और इसमें एक क्वेरी शामिल है:आप SQL में WHERE 1 = 0 कथन का उपयोग क्यों करेंगे?
SELECT ID FROM CUST_ATTR49 WHERE 1=0
ऐसी कोई क्वेरी का उपयोग क्या है जो कुछ भी वापस करने के लिए बाध्य नहीं है?
इस तरह की एक क्वेरी डेटाबेस को पिंग करने के लिए उपयोग की जा सकती है। खंड:
WHERE 1=0
सुनिश्चित करता है कि गैर डेटा वापस भेज दिया जाता है, इसलिए कोई सीपीयू प्रभारी, कोई नेटवर्क ट्रैफ़िक या अन्य संसाधनों की खपत।
के लिए इस तरह एक क्वेरी का परीक्षण कर सकते हैं:
WHERE 1=0 OR <condition>
)एक उपयोगकेस मैं सोच सकता हूं: आपके पास एक फ़िल्टर फ़ॉर्म है जहां आप कोई खोज परिणाम नहीं चाहते हैं। यदि आप कुछ फ़िल्टर निर्दिष्ट करते हैं, तो वे कहां क्लॉज में जोड़े जाते हैं।
या आमतौर पर इसका उपयोग आमतौर पर किया जाता है यदि आपको हाथ से एक एसक्यूएल क्वेरी बनाना है। जैसे आप चाहे जहां खंड खाली है की जाँच नहीं करना चाहते या not..and आप सिर्फ इस तरह सामान जोड़ सकते हैं:
where := "WHERE 0=1"
if X then where := where + " OR ... "
if Y then where := where + " OR ... "
(यदि आप के साथ खंड कनेक्ट या आप 0 = 1 की जरूरत है, अगर आपके पास और आपके पास 1 = 1 है)
ऐसा लगता है कि कोई आपके डेटाबेस को हैक करने का प्रयास कर रहा है। ऐसा लगता है कि किसी ने MySQL इंजेक्शन की कोशिश की। आप यहाँ इसके बारे में अधिक पढ़ सकते हैं: Mysql Injection
ग्रेग
से उद्धृतकी स्थिति की सूची संकलन समय पर ज्ञात नहीं है और इसके बजाय रन टाइम पर बनाया है, तो आप के बारे में चिंता करने की जरूरत नहीं चाहे आपके पास या एक से अधिक स्थितियां हों। आप उत्पन्न कर सकते हैं उन सब की तरह:
और
और उन सब को एक साथ जोड़। शुरुआत में 1 = 1 के साथ, आरंभिक और इसके साथ संबद्ध करने के लिए कुछ है।
मैंने इसे कभी भी इंजेक्शन सुरक्षा के लिए उपयोग नहीं किया है, क्योंकि आप कहते हैं कि ऐसा लगता है कि इससे अधिक मदद मिलेगी। मैंने इसे कार्यान्वयन सुविधा के रूप में उपयोग किया है। एसक्यूएल क्वेरी इंजन को 1 = 1 को अनदेखा कर देगा, इसलिए इसका कोई प्रदर्शन प्रभाव नहीं होना चाहिए।
Why would someone use WHERE 1=1 AND <conditions> in a SQL clause?
मैंने पढ़ा है लेकिन डिन सोचते हैं कि या 1 = 0 के मामले में इस्तेमाल किया जाएगा जब तक मुझे इस प्रश्न के उत्तर नहीं मिल जाते – MozenRath
यह भी है कि तालिका के अंदर किसी भी डेटा निकालने के बिना एक मेज से मेज स्कीमा निकालने के लिए किया जा सकता है। जैसा कि एंड्रिया कोलोनी ने कहा कि इसका उपयोग करने के अन्य लाभ होंगे।
कुछ सिस्टम स्क्रिप्ट का उपयोग करते हैं और गतिशील रूप से चयनित सूची को पूर्ण सूची से छिपाने के लिए सेट कर सकते हैं; इसलिए SQL पर एक झूठी स्थिति को पारित करने की आवश्यकता है। उदाहरण के लिए, 500 में से तीन रिकॉर्ड चिकित्सा कारणों से गोपनीयता के रूप में चिह्नित किए जा सकते हैं और हर किसी के लिए दृश्यमान नहीं होना चाहिए। एक गतिशील क्वेरी एचआर में 500 रिकॉर्ड दिखाई देगी, जबकि 497 प्रबंधकों के लिए दृश्यमान हैं। एसक्यूएल क्लॉज को एक मान पारित किया जाएगा जो सशर्त रूप से सेट किया गया है, यानी 'जहां 1 = 1' या 'WHERE 1 = 0', सिस्टम में लॉग इन करने के आधार पर।
यदि उपयोगकर्ता केवल रिकॉर्ड जोड़ने का इरादा रखता है, तो सबसे तेज़ तरीका किसी भी मौजूदा रिकॉर्ड को वापस किए बिना रिकॉर्डसेट खोलता है।
यह कुछ ओआरएम "फीचर" के आसपास काम करने के लिए एक हैक है। –
आपको ऐसी क्वेरी कहां मिली? –
डुप्लिकेट: http://stackoverflow.com/questions/517107/why-would-a-sql-query-have-where-1-1 – Krumelur