SQL: स्ट्रिंग करने के लिए कैसे नहीं के बराबर है


114

मेरे पास निम्नलिखित प्रश्न हैं

SELECT * FROM table
WHERE tester <> 'username';

मैं यह उम्मीद कर रहा हूं कि सभी परिणाम लौटा दें जहां परीक्षक स्ट्रिंग नहीं है username, लेकिन यह काम नहीं कर रहा है। मुझे लगता है कि मैं Likeऑपरेटर के व्युत्क्रम की तलाश कर रहा हूं लेकिन मुझे यकीन नहीं है? मेरी खोजों में मुझे संख्याओं के लिए समाधान मिला है (यह है कि मुझे <> कहां से मिला), लेकिन यह तार के साथ काम नहीं कर रहा है।


5
क्या जिन मूल्यों से आपको समस्याएँ हो रही NULLहैं? ( NULL <> 'username' => NULL=> झूठा)?
Wrikken

जवाबों:


174

आपका whereखंड उन सभी पंक्तियों को लौटा देगा जहाँ testerमेल नहीं खाता है usernameऔर जहाँ testerशून्य नहीं है।

यदि आप NULLs को शामिल करना चाहते हैं, तो कोशिश करें:

where tester <> 'username' or tester is null

यदि आप ऐसे स्ट्रिंग की तलाश कर रहे हैं जिसमें विकल्प के रूप में "उपयोगकर्ता नाम" शामिल नहीं है, तो likeइसका उपयोग किया जा सकता है:

where tester not like '%username%'

42

निम्नलिखित क्वेरी का प्रयास करें

select * from table
where NOT (tester = 'username')

20

पूर्ण-सुरक्षित स्थिति इस तरह दिखाई देगी:

select * from table
where NOT (tester <=> 'username')

हाँ!, यह केवल एक चीज है जो मेरे लिए काम करती है, क्योंकि मेरे पास एक और श्रृंखला है। पता नहीं था <=> ऑपरेटर। धन्यवाद!
14

बस ध्यान दिया गया कि <=>ऑपरेटर केवल MySQLदुनिया में मौजूद है , अधिक जानकारी के लिए देखें <=>
टॉप-मास्टर


7

strcompसमारोह यहां उपयुक्त हो सकता है (रिटर्न 0 जब तार एक जैसे हैं):

 SELECT * from table WHERE Strcmp(user, testername) <> 0;

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.