जवाबों:
यह किस तरह का क्षेत्र है? IN ऑपरेटर का उपयोग किसी एक क्षेत्र के साथ नहीं किया जा सकता है, लेकिन इसका उपयोग उपश्रेणियों में या पूर्वनिर्धारित सूचियों के साथ किया जा सकता है:
-- subquery
SELECT a FROM x WHERE x.b NOT IN (SELECT b FROM y);
-- predefined list
SELECT a FROM x WHERE x.b NOT IN (1, 2, 3, 6);
यदि आप एक स्ट्रिंग खोज रहे हैं, तो LIKE ऑपरेटर के लिए जाएं (लेकिन यह धीमा होगा):
-- Finds all rows where a does not contain "text"
SELECT * FROM x WHERE x.a NOT LIKE '%text%';
यदि आप इसे प्रतिबंधित करते हैं ताकि आप जिस स्ट्रिंग को खोज रहे हैं, उसे दिए गए स्ट्रिंग से शुरू करना पड़े, तो यह सूचकांकों का उपयोग कर सकता है (यदि उस फ़ील्ड पर कोई इंडेक्स है) और यथोचित रूप से तेज़ हो:
-- Finds all rows where a does not start with "text"
SELECT * FROM x WHERE x.a NOT LIKE 'text%';
NOT IN
कोई भी मान NULL नहीं होगा, क्योंकि IN और NULL एक स्पष्ट तरीके से गठबंधन नहीं करते हैं यदि आप तीन-मूल्यवान तर्क से परिचित नहीं हैं। यहाँ आप उपयोग करेंगे SELECT a FROM x WHERE x.b NOT IN (SELECT b FROM y WHERE b IS NOT NULL);
यदि आपको NULL मानों को भी अलग करने की आवश्यकता है, तो आपको यह करने की आवश्यकता होगी:SELECT a FROM x WHERE x.b NOT IN (SELECT b FROM y WHERE b IS NOT NULL) AND x.b IS NOT NULL;
SELECT * FROM table WHERE field1 NOT LIKE '%$x%';
(सुनिश्चित करें कि आप SQL इंजेक्शन से बचने के लिए पहले से ठीक से $ x बच गए हैं)
संपादित करें: NOT IN
कुछ अलग करता है - आपका प्रश्न पूरी तरह से स्पष्ट नहीं है, इसलिए इसका उपयोग करने के लिए कौन चुनें। LIKE 'xxx%'
एक सूचकांक का उपयोग कर सकते हैं। LIKE '%xxx'
या LIKE '%xxx%'
नहीं कर सकते।