Database
 sql >> डेटाबेस >  >> RDS >> Database

एसक्यूएल शुरुआती के लिए () ऑपरेटर के बराबर नहीं है

SQL में, ऑपरेटर के बराबर नहीं (<> ) दो भावों की गैर-समानता की तुलना करता है। अर्थात्, यह परीक्षण करता है कि क्या एक व्यंजक नहीं है दूसरे व्यंजक के बराबर।

यदि दोनों में से कोई एक या दोनों ऑपरेंड NULL हैं , NULL लौटा दिया गया है।

एसक्यूएल में एक और ऑपरेटर के बराबर नहीं है (!= ), जो वही काम करता है। आप किसका उपयोग करते हैं, यह आपके DBMS पर निर्भर करता है कि आप किसका उपयोग करने में सबसे अधिक सहज हैं, और शायद यह भी कि क्या आपके संगठन में कोई कोडिंग परंपराएँ हैं जो यह निर्धारित करती हैं कि किसका उपयोग किया जाना चाहिए।

स्रोत तालिका

कल्पना कीजिए कि हमारे डेटाबेस में निम्न तालिका है। यह वह तालिका है जिसका उपयोग हम इस पृष्ठ पर उदाहरणों के लिए करेंगे।

SELECT * FROM Pets;

परिणाम:

+---------+-------------+-----------+-----------+------------+
| PetId   | PetTypeId   | OwnerId   | PetName   | DOB        |
|---------+-------------+-----------+-----------+------------|
| 1       | 2           | 3         | Fluffy    | 2020-11-20 |
| 2       | 3           | 3         | Fetch     | 2019-08-16 |
| 3       | 2           | 2         | Scratch   | 2018-10-01 |
| 4       | 3           | 3         | Wag       | 2020-03-15 |
| 5       | 1           | 1         | Tweet     | 2020-11-28 |
| 6       | 3           | 4         | Fluffy    | 2020-09-17 |
| 7       | 3           | 2         | Bark      | NULL       |
| 8       | 2           | 4         | Meow      | NULL       |
+---------+-------------+-----------+-----------+------------+
(8 rows affected)

उदाहरण

अगर हम उन सभी पालतू जानवरों को प्राप्त करना चाहते हैं जो नहीं करते हैं एक निश्चित मालिक है, हम यह कर सकते हैं:

SELECT *
FROM Pets
WHERE OwnerId <> 3;

परिणाम:

+---------+-------------+-----------+-----------+------------+
| PetId   | PetTypeId   | OwnerId   | PetName   | DOB        |
|---------+-------------+-----------+-----------+------------|
| 3       | 2           | 2         | Scratch   | 2018-10-01 |
| 5       | 1           | 1         | Tweet     | 2020-11-28 |
| 6       | 3           | 4         | Fluffy    | 2020-09-17 |
| 7       | 3           | 2         | Bark      | NULL       |
| 8       | 2           | 4         | Meow      | NULL       |
+---------+-------------+-----------+-----------+------------+

हमारी क्वेरी ऑपरेटर के बराबर नहीं का उपयोग करती है (<> ) यह जांचने के लिए कि क्या OwnerId कॉलम 3 . के बराबर नहीं है . क्वेरी उन सभी पालतू जानवरों को लौटाती है जिनके पास स्वामी के रूप में स्वामी संख्या 3 नहीं है।

स्ट्रिंग्स

स्ट्रिंग मान के साथ तुलना करते समय, स्ट्रिंग के चारों ओर उद्धरण चिह्नों का उपयोग करें। उदाहरण के लिए, यदि हम उन सभी पालतू जानवरों के बारे में जानकारी प्राप्त करना चाहते हैं जिनका नाम Fluffy नहीं है, तो हम निम्न कार्य कर सकते हैं:

SELECT *
FROM Pets
WHERE PetName <> 'Fluffy';

परिणाम:

+---------+-------------+-----------+-----------+------------+
| PetId   | PetTypeId   | OwnerId   | PetName   | DOB        |
|---------+-------------+-----------+-----------+------------|
| 2       | 3           | 3         | Fetch     | 2019-08-16 |
| 3       | 2           | 2         | Scratch   | 2018-10-01 |
| 4       | 3           | 3         | Wag       | 2020-03-15 |
| 5       | 1           | 1         | Tweet     | 2020-11-28 |
| 7       | 3           | 2         | Bark      | NULL       |
| 8       | 2           | 4         | Meow      | NULL       |
+---------+-------------+-----------+-----------+------------+

एकाधिक शर्तें

यदि आपके पास एकाधिक शर्तें हैं, तो आप एकाधिक ऑपरेटरों का उपयोग कर सकते हैं (चाहे एक ही ऑपरेटर या अलग दोनों)।

इस तरह:

SELECT * FROM Pets 
WHERE OwnerId <> 1 AND OwnerId <> 3;

परिणाम:

+---------+-------------+-----------+-----------+------------+
| PetId   | PetTypeId   | OwnerId   | PetName   | DOB        |
|---------+-------------+-----------+-----------+------------|
| 3       | 2           | 2         | Scratch   | 2018-10-01 |
| 6       | 3           | 4         | Fluffy    | 2020-09-17 |
| 7       | 3           | 2         | Bark      | NULL       |
| 8       | 2           | 4         | Meow      | NULL       |
+---------+-------------+-----------+-----------+------------+

शर्त को नकारना

यदि आप NOT का उपयोग करते हैं ऑपरेटर के बराबर नहीं ऑपरेटर द्वारा प्रदान की गई शर्त को अस्वीकार करने के लिए, आप अंत में (= के बराबर के परिणाम प्राप्त करेंगे। ) ऑपरेटर:

SELECT *
FROM Pets
WHERE NOT PetName <> 'Fluffy';

परिणाम:

+---------+-------------+-----------+-----------+------------+
| PetId   | PetTypeId   | OwnerId   | PetName   | DOB        |
|---------+-------------+-----------+-----------+------------|
| 1       | 2           | 3         | Fluffy    | 2020-11-20 |
| 6       | 3           | 4         | Fluffy    | 2020-09-17 |
+---------+-------------+-----------+-----------+------------+

इस मामले में, आप केवल (= . के बराबर का उपयोग करने से बेहतर हैं ) ऑपरेटर, इस तरह:

SELECT *
FROM Pets
WHERE PetName = 'Fluffy';

बेशक, इसे NOT . से नकारा जा सकता है ऑपरेटर, जो तब हमें वही परिणाम देगा जो (<> .) के बराबर है ) ऑपरेटर हमें देता है:

SELECT *
FROM Pets
WHERE NOT PetName = 'Fluffy';

शून्य मान

आपने देखा होगा कि हमारी मूल नमूना तालिका में कुछ NULL हैं DOB कॉलम में मान।

एक कॉलम जिसमें NULL . है यानी इसका कोई मूल्य नहीं है। यह 0 . से अलग है या false , या यहां तक ​​​​कि एक खाली स्ट्रिंग।

NULL . से तुलना करने के लिए आप नॉट बराबर ऑपरेटर का उपयोग नहीं कर सकते हैं . दरअसल, यह आपके डीबीएमएस और इसके कॉन्फ़िगरेशन पर निर्भर हो सकता है। लेकिन अभी के लिए, आइए देखें कि क्या होता है यदि मैं DOB कॉलम की तुलना NULL से करने की कोशिश करता हूं ।

SELECT * FROM Pets 
WHERE DOB <> NULL;

परिणाम:

(0 rows affected)

गैर के लिए परीक्षण करने का तरीका-NULL मानों का उपयोग करना है IS NOT NULL

इसलिए, हमें उपरोक्त कथन को निम्नानुसार फिर से लिखना होगा।

SELECT * FROM Pets 
WHERE DOB IS NOT NULL;

परिणाम:

+---------+-------------+-----------+-----------+------------+
| PetId   | PetTypeId   | OwnerId   | PetName   | DOB        |
|---------+-------------+-----------+-----------+------------|
| 1       | 2           | 3         | Fluffy    | 2020-11-20 |
| 2       | 3           | 3         | Fetch     | 2019-08-16 |
| 3       | 2           | 2         | Scratch   | 2018-10-01 |
| 4       | 3           | 3         | Wag       | 2020-03-15 |
| 5       | 1           | 1         | Tweet     | 2020-11-28 |
| 6       | 3           | 4         | Fluffy    | 2020-09-17 |
+---------+-------------+-----------+-----------+------------+

अब हमें केवल वही पंक्तियाँ मिलती हैं जो NULL . नहीं हैं DOB . में कॉलम।

यदि आप रुचि रखते हैं, तो देखें SQL Server ANSI_NULLS Explained यह देखने के लिए कि आप NULL का तरीका कैसे बदल सकते हैं SQL सर्वर में मानों का इलाज किया जाता है।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. समूहीकृत माध्यिका के लिए सर्वोत्तम दृष्टिकोण

  2. वास्तविक वर्कफ़्लो को परिभाषित करने के लिए कॉन्फ़िगरेशन तालिकाओं का उपयोग करना

  3. टैप एंड पार्क:एक पार्किंग ऐप डेटा मॉडल

  4. डेटाबेस और डेटा फ़ाइलों को माइग्रेट कैसे करें

  5. टाइम सीरीज डेटाबेस क्या है?