2012-05-18 7 views
80

मैं जानना चाहता हूं कि ओरेकल में दो not equal ऑपरेटरों <> और != के बीच कोई अंतर है या नहीं।क्या ओरेकल एसक्यूएल में "! =" और "<>" के बीच कोई अंतर है?

क्या ऐसे मामले हैं जहां वे अलग-अलग परिणाम या अलग प्रदर्शन दे सकते हैं?

+5

के संभावित डुप्लिकेट करता है [ओरेकल नहीं के बराबर है ऑपरेटर] (http://stackoverflow.com/questions/4089771/oracle-not-equals-operator) – Mesop

+1

[ओरेकल बराबर ऑपरेटर के संभावित डुप्लिकेट] (https://stackoverflow.com/questions/4089771/oracle-not-equals-operator) –

उत्तर

71

कार्यक्षमता में कोई अंतर नहीं है।
(समान अन्य सभी डीबीएमएस के लिए सच है - उनमें से ज्यादातर दोनों शैलियों का समर्थन): https://docs.oracle.com/database/121/SQLRF/conditions002.htm#CJAGAABC

SQL मानक केवल "नहीं के बराबर होती है के लिए एक एकल ऑपरेटर परिभाषित करता है:

यहाँ वर्तमान एसक्यूएल संदर्भ है "और कहा कि <>

+4

! = एक XML फ़ाइल में स्टोर करना आसान है! –

32

असल में है, इसलिए इस ऑपरेटर की चार प्रकार हैं:

<> 
!= 
^= 

और यहां तक ​​कि

¬= -- worked on some obscure platforms in the dark ages 

जो एक ही हैं, लेकिन अलग तरह से व्यवहार जब एक शब्दशः मैच की आवश्यकता है (संग्रहीत रूपरेखा या कैश की गई खोजों)।

+2

और 'नहीं (x = y)', शायद '! (X = y)', आदि जैसी विविधताएं? – MatBailie

+1

दिलचस्प! मुझे '^ =' के बारे में पता नहीं था (जब मैंने मैन्युअल में लिंक पोस्ट किया था तो इसे पहली बार देखा था)। लेकिन कैश किए गए प्रश्नों के बारे में आपका मुद्दा एक अच्छा है। –

+1

@ डेम्स: 'ओरेकल' में, बूलियन 'एसक्यूएल' में पहला श्रेणी का प्रकार नहीं है (जो 'पीएल/एसक्यूएल' से अलग है)। अर्थात। आप किसी अन्य सिस्टम की तरह 'दोहरी से 1 = 1' नहीं चुन सकते हैं। तो बूलियन के पास केवल अपने लॉजिकल संदर्भों ('कहां' या 'हैविंग' या इसी तरह के खंडों में वैध ऑपरेटरों का सेट होता है)। ओरेकल के 'एसक्यूएल' (AFAIK) में 'नॉट' एकमात्र बूलियन निषेध ऑपरेटर है। – Quassnoi

1

विश्वविद्यालय में हमें 'सर्वोत्तम अभ्यास' का उपयोग करना सिखाया गया था! = नियोक्ता के लिए काम करते समय, हालांकि उपरोक्त सभी ऑपरेटरों की समान कार्यक्षमता होती है।

+13

SQL मानक (केवल) '<>' को "बराबर नहीं" ऑपरेटर के रूप में परिभाषित करता है। इसलिए मैं इसे "सर्वोत्तम अभ्यास" के रूप में उपयोग करने पर विचार करता हूं –

+2

दिलचस्प। मुझे जो कुछ भी सिखाया गया है उसे जांचना होगा एसक्यूएल मानक का है या नहीं। इस पर ध्यान दिलाने के लिए धन्यवाद। –

+8

शायद मेरी सी विरासत बाहर आ रही है, लेकिन मैं '<>' खड़ा नहीं हो सकता और '! =' पसंद करूंगा। मुख्य रूप से क्योंकि '<>' कहने में "उससे कम या उससे अधिक", मुझे लगता है कि डेटाटाइप का एक निहित आदेश है (जो जरूरी नहीं है, हालांकि यह सभी एसक्यूएल डेटाटाइप के लिए सच है), जबकि '! = 'एक बहुत शुद्ध अर्थ में" बराबर नहीं "कह रहा है। –

-2

इस लेख के अनुसार,! = तेजी

http://www.dba-oracle.com/t_not_equal_operator.htm

+11

हालांकि लोकप्रिय, यह वेबसाइट दुर्भाग्य से कई विषयों पर एक विश्वसनीय स्रोत नहीं है। इस मुद्दे पर पहले चर्चा की गई थी [यहां] (http://stackoverflow.com/q/12003127/409172)।बक्षीस के बावजूद, कोई भी परीक्षण केस बनाने में सक्षम नहीं था जो प्रदर्शन में उल्लेखनीय अंतर दिखाता था। लेकिन मेरा प्रस्ताव अभी भी खड़ा है - यदि आप एक परीक्षण केस बना सकते हैं तो मैं आपको 500 प्वाइंट बक्षीस दूंगा! = अन्य ऑपरेटरों के बराबर नहीं है। –

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