SQL में, ऑपरेटर के बराबर नहीं (!= ) दो भावों की गैर-समानता की तुलना करता है। अर्थात्, यह परीक्षण करता है कि क्या एक व्यंजक नहीं है दूसरे व्यंजक के बराबर।
यदि दोनों में से कोई एक या दोनों ऑपरेंड NULL हैं , NULL लौटा दिया गया है।
एसक्यूएल में एक और ऑपरेटर के बराबर नहीं है (<> ), जो वही काम करता है। आप किसका उपयोग करते हैं, यह आपके DBMS पर निर्भर करता है कि आप किसका उपयोग करने में सबसे अधिक सहज हैं, और शायद यह भी कि क्या आपके संगठन में कोई कोडिंग परंपराएँ हैं जो यह निर्धारित करती हैं कि किसका उपयोग किया जाना चाहिए।
सोर्स टेबल
कल्पना कीजिए कि हमारे डेटाबेस में निम्न तालिका है। यह वह तालिका है जिसका उपयोग हम इस पृष्ठ पर उदाहरणों के लिए करेंगे।
SELECT * FROM Owners; परिणाम:
+-----------+-------------+------------+----------------+-------------------+ | OwnerId | FirstName | LastName | Phone | Email | |-----------+-------------+------------+----------------+-------------------| | 1 | Homer | Connery | (308) 555-0100 | example@sqldat.com | | 2 | Bart | Pitt | (231) 465-3497 | example@sqldat.com | | 3 | Nancy | Simpson | (489) 591-0408 | NULL | | 4 | Boris | Trump | (349) 611-8908 | NULL | | 5 | Woody | Eastwood | (308) 555-0112 | example@sqldat.com | | 6 | Burt | Tyson | (309) 565-0112 | example@sqldat.com | +-----------+-------------+------------+----------------+-------------------+
उदाहरण
अगर हम उन सभी स्वामियों की सूची वापस करना चाहते हैं जिनके पास OwnerId . नहीं है का 3 , हम यह कर सकते हैं:
SELECT *
FROM Owners
WHERE OwnerId != 3; परिणाम:
+-----------+-------------+------------+----------------+-------------------+ | OwnerId | FirstName | LastName | Phone | Email | |-----------+-------------+------------+----------------+-------------------| | 1 | Homer | Connery | (308) 555-0100 | example@sqldat.com | | 2 | Bart | Pitt | (231) 465-3497 | example@sqldat.com | | 4 | Boris | Trump | (349) 611-8908 | NULL | | 5 | Woody | Eastwood | (308) 555-0112 | example@sqldat.com | | 6 | Burt | Tyson | (309) 565-0112 | example@sqldat.com | +-----------+-------------+------------+----------------+-------------------+
हमारी क्वेरी ऑपरेटर के बराबर नहीं का उपयोग करती है (!= ) यह जांचने के लिए कि क्या OwnerId कॉलम 3 . के बराबर नहीं है . क्वेरी स्वामी संख्या 3 को छोड़कर सभी स्वामियों को लौटाती है।
स्ट्रिंग्स
स्ट्रिंग मान के साथ तुलना करते समय, स्ट्रिंग के चारों ओर उद्धरण चिह्नों का उपयोग करें। उदाहरण के लिए, यदि हम उन सभी मालिकों के बारे में जानकारी प्राप्त करना चाहते हैं जिनका पहला नाम होमर नहीं है, तो हम निम्न कार्य कर सकते हैं:
SELECT *
FROM Owners
WHERE FirstName != 'Homer'; परिणाम:
+-----------+-------------+------------+----------------+-------------------+ | OwnerId | FirstName | LastName | Phone | Email | |-----------+-------------+------------+----------------+-------------------| | 2 | Bart | Pitt | (231) 465-3497 | example@sqldat.com | | 3 | Nancy | Simpson | (489) 591-0408 | NULL | | 4 | Boris | Trump | (349) 611-8908 | NULL | | 5 | Woody | Eastwood | (308) 555-0112 | example@sqldat.com | | 6 | Burt | Tyson | (309) 565-0112 | example@sqldat.com | +-----------+-------------+------------+----------------+-------------------+
एकाधिक शर्तें
यदि आपके पास एकाधिक शर्तें हैं, तो आप एकाधिक ऑपरेटरों का उपयोग कर सकते हैं (चाहे एक ही ऑपरेटर या अलग दोनों)।
इस तरह:
SELECT * FROM Owners
WHERE OwnerId != 1 AND OwnerId != 3; परिणाम:
+-----------+-------------+------------+----------------+-------------------+ | OwnerId | FirstName | LastName | Phone | Email | |-----------+-------------+------------+----------------+-------------------| | 2 | Bart | Pitt | (231) 465-3497 | example@sqldat.com | | 4 | Boris | Trump | (349) 611-8908 | NULL | | 5 | Woody | Eastwood | (308) 555-0112 | example@sqldat.com | | 6 | Burt | Tyson | (309) 565-0112 | example@sqldat.com | +-----------+-------------+------------+----------------+-------------------+
एक बार जब आप अधिक शर्तों का उपयोग करना शुरू कर देते हैं, तो आपको उन स्थितियों को घेरने के लिए कोष्ठकों का उपयोग करना चाहिए जिनका आप पहले मूल्यांकन करना चाहते हैं। यदि आप ऐसा नहीं करते हैं, तो आप देख सकते हैं कि आपको अप्रत्याशित परिणाम मिल सकते हैं, क्योंकि शर्तों का मूल्यांकन उस क्रम में किया जा रहा है जिसका आपने इरादा नहीं किया था।
शर्त को नकारना
यदि आप NOT का उपयोग करते हैं ऑपरेटर द्वारा प्रदान की गई शर्त को नकारने के लिए ऑपरेटर के बराबर नहीं है, तो आप अंत में बराबर के परिणाम प्राप्त करेंगे (= ) ऑपरेटर:
SELECT *
FROM Owners
WHERE NOT FirstName != 'Homer'; परिणाम:
+-----------+-------------+------------+----------------+-------------------+ | OwnerId | FirstName | LastName | Phone | Email | |-----------+-------------+------------+----------------+-------------------| | 1 | Homer | Connery | (308) 555-0100 | example@sqldat.com | +-----------+-------------+------------+----------------+-------------------+
इस मामले में, आप केवल बराबर का उपयोग कर रहे हैं (= ) ऑपरेटर, इस तरह:
SELECT *
FROM Owners
WHERE FirstName = 'Homer';
बेशक, इसे NOT . से नकारा जा सकता है ऑपरेटर, जो तब हमें वही परिणाम देगा जो इसके बराबर नहीं है (!= ) ऑपरेटर हमें देता है:
SELECT *
FROM Owners
WHERE NOT FirstName = 'Homer'; पूर्ण मान
आपने देखा होगा कि हमारी मूल नमूना तालिका में कुछ NULL हैं Email में मान कॉलम।
एक कॉलम जिसमें NULL . है यानी इसका कोई मूल्य नहीं है। यह 0 . से अलग है या false , या यहां तक कि एक खाली स्ट्रिंग।
NULL . से तुलना करने के लिए आप नॉट बराबर ऑपरेटर का उपयोग नहीं कर सकते हैं . दरअसल, यह आपके डीबीएमएस और इसके कॉन्फ़िगरेशन पर निर्भर हो सकता है। लेकिन अभी के लिए, आइए देखें कि अगर मैं Email . की तुलना करने की कोशिश करता हूं तो क्या होता है? कॉलम से NULL ।
SELECT * FROM Owners
WHERE Email != NULL; परिणाम:
(0 rows affected)
गैर के लिए परीक्षण करने का तरीका-NULL मानों का उपयोग करना है IS NOT NULL ।
इसलिए, हमें उपरोक्त कथन को निम्नानुसार फिर से लिखना होगा।
SELECT * FROM Owners
WHERE Email IS NOT NULL; परिणाम:
+-----------+-------------+------------+----------------+-------------------+ | OwnerId | FirstName | LastName | Phone | Email | |-----------+-------------+------------+----------------+-------------------| | 1 | Homer | Connery | (308) 555-0100 | example@sqldat.com | | 2 | Bart | Pitt | (231) 465-3497 | example@sqldat.com | | 5 | Woody | Eastwood | (308) 555-0112 | example@sqldat.com | | 6 | Burt | Tyson | (309) 565-0112 | example@sqldat.com | +-----------+-------------+------------+----------------+-------------------+
अब हमें केवल वही पंक्तियाँ मिलती हैं जो NULL . नहीं हैं Email . में कॉलम।
यदि आप रुचि रखते हैं, तो देखें SQL Server ANSI_NULLS Explained यह देखने के लिए कि आप NULL का तरीका कैसे बदल सकते हैं SQL सर्वर में मानों का इलाज किया जाता है।