2010-02-05 12 views
5

मैं जो इस तरह एक कहां खंड है कुछ एसक्यूएल कोड में देख रहा हूँ:मूल्य से पहले चर

WHERE 'USD' = CCY 

मैं लेखक क्यों वह बाएं हाथ की ओर मूल्य डाल रहा है कहा, और उन्होंने कहा कि यह एक अच्छी आदत है ऐसा करने के लिए, सी ++ से निकलते हुए, जहां लोग दूसरे बराबर चिह्न भूलकर समानता की तुलना करने के बजाय गलती से मूल्य असाइन कर सकते थे।

मैं इस से पहले कभी नहीं देखा।

आपके क्या विचार हैं?

+3

समुदाय विकी – SilentGhost

+0

होना चाहिए जब मैं सी ++, सी #, जावा, जावास्क्रिप्ट इत्यादि में चर की तुलना करते समय समझ सकता हूं ... लेकिन मुझे नहीं लगता कि यह वास्तव में मायने रखता है क्योंकि आप किसी खंड में चर को कभी भी असाइन नहीं कर सकते हैं ... – Zoidberg

+2

@Zoidberg: यह लगभग सी # या जावा में कभी भी कोई मुद्दा नहीं है, जहां "if" कथन आदि में बूलियन स्थिति का प्रकार होना चाहिए - इसलिए यह बहुत दुर्लभ है कि एक टाइपो अभी भी कानूनी होगा। –

उत्तर

8

एर, सी ++ एसक्यूएल नहीं है। SQL में कोई == नहीं है और WHERE खंड में कोई असाइनमेंट नहीं है।

मुझे यकीन है कि यह "सबसे अच्छा अभ्यास" के रूप में उत्तीर्ण नहीं कर रहा हूँ लेकिन वहाँ एक सम्मेलन जो दाएँ हाथ की ओर पर ज्ञात मूल्य देता है। तो, अपने उदाहरण के रूप में एक शाब्दिक साथ कि होगा

WHERE CCY = 'USD' 
2

कभी एसक्यूएल, में देखा जहां के पाठ्यक्रम सी ++ तर्क लागू नहीं होता है, के रूप में '=' ​​इस संदर्भ में एक असाइनमेंट ऑपरेटर नहीं है। भी, बहुत से सी ++ प्रोग्रामर (मुझे सहित) इस शैली को पसंद नहीं करते हैं। C++ में

4

सर्वश्रेष्ठ अभ्यास यह एसक्यूएल में सबसे अच्छा अभ्यास नहीं है। क्वेरी ऑप्टिमाइज़र परवाह नहीं होगा, इसलिए यह वरीयता का मामला है, लेकिन मुझे कहना है कि यह मेरी वरीयता नहीं होगी या मैं इसे स्वाभाविक रूप से कैसे लिखूंगा।

0

आप इसे को देखें, तो:

'USD' = CCY 

मूलतः एक ही है:

CCY = 'USD' 

के लिए के रूप में:

यह सबसे अच्छा अभ्यास, ऐसा करने के लिए सी ++ जहां से उत्पन्न है लोग गलती से समानता की तुलना करने के बजाय मान असाइन कर सकते हैं दूसरा प्राप्त करने के बराबर संकेत मिलता है।

ठीक है, मैं कभी नहीं देखा है ऐसा, और यह था कि अगर महत्वपूर्ण है, हम निश्चित रूप से इस कहीं देखा है और अगर सब कुछ से नहीं यह सबसे द्वारा अभ्यास किया गया है जाएगा।

+0

?????????????????? – Sarfraz

+0

+1 कोई विचार नहीं कि यह क्यों नीचे गिर गया, हम सभी के समान कह रहे थे – Andrew

+0

@ एंड्रयू: आपका बहुत बहुत धन्यवाद, लेकिन मुझे नहीं पता कि लोग अपने लिए वोट पाने के लिए कैसे नीचे उतरने की कोशिश कर रहे हैं, यह वास्तव में बुरा है अभ्यास। – Sarfraz

0

मैं व्यक्तिगत रूप से इसे उस तरह से नहीं कर सकता है, लेकिन यह मेरे लिए के रूप में बाएं हाथ की ओर स्तंभ नाम डाल दिया है अधिक पठनीय/आसान भीतर पालन करने के लिए एक एसक्यूएल क्वेरी।

मैंने शायद ही कभी इसे विपरीत तरीके से देखा है, और ऐसा नहीं लगता कि दिया गया कारण वास्तव में एसक्यूएल पर लागू होता है (जैसा कि बताया गया है, यह एसक्यूएल में "=" है, न कि "==")

0

तो वे कहते हैं कि यह एक अच्छी आदत है, मैं साबित होता है कि एसक्यूएल नहीं सी ++ स्रोतों के साथ उसे पूछने चाहते हैं। एसक्यूएल कोड मैंने कभी (हमारे कोड, अन्य संगठन के कोड, माइक्रोसॉफ्ट मदद फ़ाइलों, एसक्यूएल ब्लॉग, आदि सहित) पढ़ा है कि आपके देव करता है के विपरीत है की 99.9% के बाद से, मैं कहेंगे कि के सामान्य उम्मीद का उल्लंघन डेवलपर जो कोड बनाए रखेगा वह एक बुरा विचार है।एसक्यूएल में हम प्रपत्र

WHERE CCY = 'USD' 

देखने के लिए नहीं

WHERE 'USD' = CCY 

इसलिए प्रोफ़ेशनल भी कोड है कि तरीके से देखभाल करने के लिए स्पष्ट है सुनिश्चित करने के लिए लिखते थे उम्मीद है।