পল ডিকসনের উত্তর আমার জন্য উজ্জ্বলভাবে কাজ করেছিল। এটি যুক্ত করতে, এখানে কিছু জিনিস যা আমি রেগেক্সপি ব্যবহার করতে আগ্রহী তাদের জন্য পর্যবেক্ষণ করেছি:
ওয়াইল্ডকার্ড সহ একাধিক লাইক ফিল্টার সম্পন্ন করতে:
SELECT * FROM fiberbox WHERE field LIKE '%1740 %'
OR field LIKE '%1938 %'
OR field LIKE '%1940 %';
REGEXP বিকল্প ব্যবহার করুন:
SELECT * FROM fiberbox WHERE field REGEXP '1740 |1938 |1940 ';
REGEXP উদ্ধৃতিতে এবং | এর মধ্যে মানগুলি (OR) অপারেটরটিকে ওয়াইল্ডকার্ড হিসাবে বিবেচনা করা হয়। সাধারণত, আরজিইএক্সপি-র% 1740% হিসাবে কাজ করার জন্য ওয়াইল্ডকার্ড এক্সপ্রেশন যেমন (। *) 1740 (। *) প্রয়োজন হবে।
আপনার যদি ওয়াইল্ডকার্ড স্থাপনের উপর আরও নিয়ন্ত্রণের প্রয়োজন হয় তবে এই রূপগুলির কয়েকটি ব্যবহার করুন:
নিয়ন্ত্রিত ওয়াইল্ডকার্ড প্লেসমেন্টের সাথে পছন্দ মতো করতে:
SELECT * FROM fiberbox WHERE field LIKE '1740 %'
OR field LIKE '%1938 '
OR field LIKE '%1940 % test';
ব্যবহার করুন:
SELECT * FROM fiberbox WHERE field REGEXP '^1740 |1938 $|1940 (.*) test';
মানটির সামনে ^ স্থাপন রেখার সূচনা নির্দেশ করে।
মানের পরে $ স্থাপন রেখার শেষ নির্দেশ করে।
স্থাপন (। *)%% ওয়াইল্ডকার্ডের মতো আচরণ করে।
দ্য . লাইন ব্রেক ব্যতীত যে কোনও একক অক্ষরকে নির্দেশ করে। স্থাপন। ভিতরে () এর সাথে * (। *) একটি পুনরাবৃত্ত প্যাটার্ন যুক্ত করে যা লাইন শেষ অবধি কতগুলি অক্ষর নির্দেশ করে।
নির্দিষ্ট ম্যাচগুলি সঙ্কুচিত করার আরও কার্যকর উপায় রয়েছে তবে এর জন্য নিয়মিত এক্সপ্রেশনগুলির আরও পর্যালোচনা প্রয়োজন। দ্রষ্টব্য: সমস্ত রেইজেক্স নিদর্শনগুলি মাইএসকিউএল স্টেটমেন্টগুলিতে কাজ করে না বলে মনে হয়। আপনাকে আপনার নিদর্শনগুলি পরীক্ষা করতে হবে এবং কী কাজ করে তা দেখতে হবে।
শেষ অবধি, একাধিক লাইক এবং পছন্দ মতো ফিল্টার সম্পন্ন করতে:
SELECT * FROM fiberbox WHERE field LIKE '%1740 %'
OR field LIKE '%1938 %'
OR field NOT LIKE '%1940 %'
OR field NOT LIKE 'test %'
OR field = '9999';
REGEXP বিকল্প ব্যবহার করুন:
SELECT * FROM fiberbox WHERE field REGEXP '1740 |1938 |^9999$'
OR field NOT REGEXP '1940 |^test ';
বা মিশ্র বিকল্প:
SELECT * FROM fiberbox WHERE field REGEXP '1740 |1938 '
OR field NOT REGEXP '1940 |^test '
OR field NOT LIKE 'test %'
OR field = '9999';
লক্ষ্য করুন আমি পৃথক পৃথক WHERE ফিল্টারে সেট করা নেই। আমি উপেক্ষিত নিদর্শনগুলি, সামনের দিকে তাকানোর ধরণগুলি ইত্যাদি ব্যবহার করে পরীক্ষা করেছি। তবে, এই অভিব্যক্তিগুলি কাঙ্ক্ষিত ফলাফল দেয় বলে মনে হয় নি। উপরের প্রথম উদাহরণে, আমি সঠিক মিলটি নির্দেশ করতে ^ 9999 use ব্যবহার করি। এটি আপনাকে একই অভিব্যক্তিতে ওয়াইল্ডকার্ডের ম্যাচের সাথে নির্দিষ্ট মিলগুলি যুক্ত করতে দেয়। তবে আপনি এই ধরণের বিবৃতি মিশ্রন করতে পারেন যেমন আপনি তালিকাভুক্ত দ্বিতীয় উদাহরণে দেখতে পাচ্ছেন।
পারফরম্যান্স সম্পর্কে, আমি একটি বিদ্যমান টেবিলের বিরুদ্ধে কিছু ছোটখাটো পরীক্ষা চালিয়েছি এবং আমার প্রকরণের মধ্যে কোনও পার্থক্য খুঁজে পাইনি। তবে, আমি কল্পনা করি পারফরম্যান্স বড় ডেটাবেস, বৃহত্তর ক্ষেত্র, বৃহত্তর রেকর্ড গণনা এবং আরও জটিল ফিল্টার সহ একটি সমস্যা হতে পারে।
বরাবরের মতো, উপরের যুক্তিটি যেমনটি বোধগম্য হয় তেমন ব্যবহার করুন।
আপনি যদি নিয়মিত এক্সপ্রেশন সম্পর্কে আরও জানতে চান তবে আমি একটি ভাল রেফারেন্স সাইট হিসাবে www.regular-expressions.info কে প্রস্তাব দিই।
WHERE FIND_IN_SET(f.fiberbox, "1740,1938,1940")