আমরা জানি, উভয় ফাংশন তাদের দেওয়া আর্গুমেন্ট থেকে একটি স্ট্রিং অনুসন্ধান করতে ব্যবহার করা হয় তবে তাদের মধ্যে কিছু উল্লেখযোগ্য পার্থক্য নিম্নরূপ রয়েছে
- 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 প্রদান করে যা সঠিক উত্তর।