2009-10-15 18 views
5

क्या SQL सर्वर पर बीटवेन क्वेरी में v1 और v2 के क्रम में कोई अंतर है?वर्ग: बी 1 और वी 2

SELECT * 
    FROM table 
WHERE col BETWEEN v1 AND v2 

वर्तमान में मुझे कोई परिणाम नहीं मिलता है यदि v1 v2 से बड़ा है।

col >= v1 AND col <= v2 

के लिए यह सिंटैक्टिक चीनी है या क्या यह वास्तव में दोनों के बीच सभी मूल्यों को लेता है? मेरे वर्तमान अवलोकनों पर मुझे लगता है कि यह पहला मामला है।

उत्तर

11

एसक्यूएल सर्वर 2008:

select 1 
where 5 between 1 and 7 

1 परिणाम

select 1 
where 5 between 7 and 1 

0 परिणामों

इन परिणामों के आधार पर, और Postgre Docs मैं परिकल्पना है कि एएनएसआई मानक इस प्रकार है (हालांकि मुझे वह डॉक्टर नहीं मिल रहा है)।

a between x and y 
== 
a >= x AND a <= y 

अद्यतन:

SQL-92 कल्पना का कहना है (उद्धरण):

"X BETWEEN Y AND Z" is equivalent to "X>=Y AND X<=Z" 
+0

और "7 और 1 के बीच 7 चुनें" - भयानक! –

+0

उदाहरण MySQL –

+0

में वाक्य रचनात्मक रूप से मान्य नहीं हैं (आपको उन्हें काम करने के लिए 'दोहरी से' डालना होगा) –

11

हाँ! भविष्यवाणी के मामले में तर्कों का क्रम। और, हां, यह एंड-एड तुलना फ़ॉर्म के लिए [ज्यादातर] वाक्य रचनात्मक चीनी है।

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

3

हां, आप सही हैं, क्या यह आपके द्वारा वर्णित निर्माण के लिए केवल सिंटैक्टिक चीनी है।