जैसा कि हम जानते हैं, दोनों कार्यों का उपयोग उनमें दिए गए तर्कों से एक स्ट्रिंग को खोजने के लिए किया जाता है, लेकिन उनके बीच कुछ महत्वपूर्ण अंतर इस प्रकार हैं
- 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 देता है जो सही उत्तर है।