जैसा कि हम जानते हैं, दोनों फ़ंक्शन उनमें प्रदान किए गए आर्गुमेंट्स से एक स्ट्रिंग खोजने के लिए उपयोग किए जाते हैं लेकिन उनके बीच कुछ महत्वपूर्ण अंतर हैं:
- FIND_IN_SET() फ़ंक्शन स्ट्रिंग सूची का उपयोग करता है जो स्वयं एक स्ट्रिंग है जिसमें सबस्ट्रिंग कॉमा से अलग होते हैं। जबकि, LOCATE() फ़ंक्शन में एक स्ट्रिंग होती है जिससे यह सबस्ट्रिंग की पहली घटना की स्थिति ढूंढेगा यदि मौजूद है।
- LOCATE() फ़ंक्शन में हम खोज के प्रारंभ बिंदु को स्थिति के लिए वैकल्पिक आर्गुमेंट प्रदान करके प्रबंधित कर सकते हैं। जबकि, FIND_IN_SET() फ़ंक्शन के लिए MySQL ऐसी लचीलापन प्रदान नहीं करता और खोज डिफ़ॉल्ट रूप से पहली स्ट्रिंग से शुरू होगी।
- पूर्णांकों के मामले में, FIND_IN_SET() LOCATE() फ़ंक्शन की तुलना में अधिक उपयुक्त है। इसे निम्नलिखित उदाहरण से समझा जा सकता है:
उदाहरण
mysql> Select IF(LOCATE(2,'10,11,12,13') > 0,1,0) As result; +--------+ | result | +--------+ | 1 | +--------+ 1 row in set (0.05 sec) mysql> Select IF(FIND_IN_SET(2,'10,11,12,13') > 0,1,0)As Result; +--------+ | Result | +--------+ | 0 | +--------+ 1 row in set (0.00 sec)
उपरोक्त उदाहरणों के परिणाम सेट से, हम देख सकते हैं कि LOCATE() फ़ंक्शन 1 लौटाता है भले ही 2 स्ट्रिंग के रूप में आर्गुमेंट्स में मौजूद नहीं है। लेकिन FIND_IN_SET() फ़ंक्शन 0 लौटाता है जो सही उत्तर है।