দুই ফাংশনই সার্চ করতে ব্যবহৃত হয় কিন্তু পার্থক্য রয়েছে:
- FIND_IN_SET() কমা-সেপারেটেড স্ট্রিং লিস্টে সার্চ করে। LOCATE() একটি স্ট্রিংয়ের মধ্যে সাবস্ট্রিংর প্রথম আবির্ভাব খুঁজে।
- LOCATE()-এ তৃতীয় আর্গুমেন্ট দিয়ে সার্চিংয়ের শুরুয় পজিশন নিয়ন্ত্রণ করা যায়। FIND_IN_SET()-এ এমন সুবিধা নেই, সার্চিং ডিফল্টভাবে প্রথম স্ট্রিং থেকে শুরু হয়।
- ইন্টিজার সার্চের ক্ষেত্রে FIND_IN_SET() বেশি উপযোগী। উদাহরণ নিচে:
উদাহরণ
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() '2' খুঁজে পায় '12'-এর ভেতর থেকে (ভুল ফলাফল), কিন্তু FIND_IN_SET() সঠিকভাবে ০ ফেরত দিয়েছে কারণ '2' কমা-সেপারেটেড তালিকার আলাদা আইটেম নয়।