MySQL में, आप FIND_IN_SET()
. का उपयोग कर सकते हैं किसी दिए गए सूची आइटम की अनुक्रमणिका को एक स्ट्रिंग सूची में वापस करने के लिए कार्य करता है (उदाहरण के लिए 'आइटम1, आइटम2, आइटम3,...')।
फ़ंक्शन दो तर्क लेता है; खोजने के लिए स्ट्रिंग, और खोजने के लिए सूची।
वाक्य रचना इस प्रकार है:
FIND_IN_SET(str,strlist)
जहां str
वह स्ट्रिंग है जिसे आप ढूंढ रहे हैं, और strlist
खोजने के लिए स्ट्रिंग सूची है।
उदाहरण
यहां एक उदाहरण दिया गया है:
SELECT FIND_IN_SET('Dog', 'Cat,Dog,Horse') AS 'Result';
परिणाम:
+--------+ | Result | +--------+ | 2 | +--------+
यह देता है 2
क्योंकि वह स्ट्रिंग की स्थिति है Dog
स्ट्रिंग सूची के भीतर।
ध्यान दें कि केवल पहली घटना का सूचकांक लौटाया जाता है। तो अगर Dog
. की एक और घटना होती उस पहले वाले के बाद, हमें अभी भी वही परिणाम मिलेगा:
SELECT FIND_IN_SET('Dog', 'Cat,Dog,Horse,Dog') AS 'Result';
परिणाम:
+--------+ | Result | +--------+ | 2 | +--------+
कोई मिलान नहीं
जब स्ट्रिंग नहीं मिलती है, तो 0
. का परिणाम होता है लौटा दिया गया है:
SELECT FIND_IN_SET('Lizard', 'Cat,Dog,Horse') AS 'Result';
परिणाम:
+--------+ | Result | +--------+ | 0 | +--------+
क्या होगा यदि पहले तर्क में अल्पविराम हो?
यदि पहले तर्क में अल्पविराम है, तो फ़ंक्शन सकारात्मक परिणाम नहीं लौटाएगा।
यहां एक उदाहरण दिया गया है:
SELECT FIND_IN_SET('Cat,Dog', 'Cat,Dog,Horse') AS 'Result';
परिणाम:
+--------+ | Result | +--------+ | 0 | +--------+
इस उदाहरण में, कोई उम्मीद कर सकता है कि वह सकारात्मक परिणाम देगा (दिए गए Cat,Dog
वास्तव में सूची में है), हालांकि, अल्पविराम का उपयोग सूची में विभाजक के रूप में किया जाता है, और इसलिए, स्ट्रिंग मिलान काम नहीं करता है।
यह भी देखें कि FIELD()
का उपयोग करके तर्कों की सूची में तर्क की स्थिति कैसे लौटाएं समारोह।