2011-12-02 17 views
8

संभव डुप्लिकेट:
Why would someone use WHERE 1=1 AND <conditions> in a SQL clause?क्या किसी खंड में 1 = 1 का उपयोग करने का कोई तार्किक कारण है?

मैं एक कोड बेस अक्सर अक्सर

where 1=1

है पर काम कर रहा हूँ, इन प्रश्नों जटिल और पढ़ने के लिए मुश्किल है। इसलिए एक रेफैक्टर के लिए पूरी तरह से क्वेरी अर्थशास्त्र को तोड़ना हमेशा संभव नहीं होता है। मेरा आंत वृत्ति यह है कि यह हमेशा अनावश्यक है। शायद समूह के लिए कुछ कॉलम के साथ एक aggregrate समारोह के साथ SELECT प्रदर्शन करते समय समूह द्वारा क्लॉज के लिए आवश्यकता के समान खंड के लिए एक आवश्यकता मौजूद है।

क्या इसकी कभी आवश्यकता है?

+4

हाँ, यह एसक्यूएल इंजेक्शन का खतरा वेब साइटों के साथ बहुत उपयोगी है में आसानी के लिए इसे का उपयोग मामले डेवलपर्स के अधिकांश;) –

+0

मैं इतना एक या दो बार पर इस सटीक सवाल देखा है, चाहते हो सकता है जब आप अपने प्रश्न शीर्षक में टाइप करते हैं तो सुझाए गए प्रश्नों की सूची पर अधिक ध्यान देना। –

+0

जहां 1 = 1 एक 100% सत्य कथन है। इसलिए, जो भी आपके पास SELECT कथन में है, उसे वापस कर दिया जाएगा, इससे कोई फर्क नहीं पड़ता कि इसमें पंक्तियां हैं या नहीं। –

उत्तर

16

यह गतिशील निर्माण बनाता है कहां खंड आसान ...

WHERE 
    1=1 
    AND condition1 
    AND condition2 

इस तरह से आप बाहर काम करने की जरूरत नहीं है यदि आप शर्तों को जोड़ते हैं तो आपको और नहीं चाहिए। आप हमेशा को और इसकी आवश्यकता है।

1

मुझे लगता है कि इसमें नकली और बयानों के बारे में सोचने के बिना लंबे समय तक लिखने में सक्षम होने के साथ कुछ करना है। दूसरे शब्दों में यह कोड को अच्छे दिखने के लिए बस वहां है। बहुत यकीन है कि अनुकूलित हो जाता है। लेकिन अगर कोई सामने एक या है, कि एसक्यूएल इंजेक्शन की गंध :)

SELECT 
... 
WHERE 1=1 
AND COND 
AND ANOTHERCOND 
AND THIRDCOND 
-- AND COMMENTEDOUT 
AND FIFTHCOND 
+0

हाँ, लेकिन अगर आपको मिल गया है या शर्त के लिए "1 = 0" है जो आप शुरू करते हैं :) –

2

मैंने देखा है किया है कि इतनी है कि जब गतिशील प्रश्नों का निर्माण अगर आप गतिशील रूप से अपने एसक्यूएल करने के लिए प्रतिबंध जोड़ पता करने के लिए जहां AND खंड शुरू करने के लिए सब कुछ करने के बाद WHERE 1=1

2

इसके उपयोगी था के बाद से है करने के लिए नहीं था , इस तरह आपको कभी भी 'WHERE' कीवर्ड की परवाह नहीं करनी चाहिए और प्रत्येक भाग की शुरुआत में 'AND' का उपयोग कर सकते हैं जहां आप प्रतिबंध जोड़ते हैं। (यदि आप चाहते हैं कि मैं इसे समझाने वाला एक छोटा सा उदाहरण कोड कर सकूं।)

तो, हाँ, 1 = 1 के कानूनी उपयोग हैं।

संबंधित मुद्दे