- 1 1. পরিচিতি
- 2 2. MySQL-এ রেগুলার এক্সপ্রেশনের মৌলিক বিষয়
- 3 3. MySQL 8.0-এ যোগ করা রেগুলার এক্সপ্রেশন ফাংশনগুলি
- 4 4. রেগুলার এক্সপ্রেশনের ব্যবহারিক উদাহরণ
- 5 5. গুরুত্বপূর্ণ বিবেচনা এবং সেরা অনুশীলনসমূহ
- 6 6. উপসংহার
- 7 7. প্রায়শই জিজ্ঞাসিত প্রশ্ন (FAQ)
- 7.1 Q1. MySQL-এ REGEXP এবং LIKE এর মধ্যে পার্থক্য কী?
- 7.2 প্রশ্ন ২. পারফরম্যান্স কীভাবে উন্নত করা যায়?
- 7.3 প্রশ্ন ৩. মাল্টিবাইট অক্ষরগুলি কীভাবে পরিচালনা করবেন?
- 7.4 প্রশ্ন ৪. রেগুলার এক্সপ্রেশন ব্যবহার করে রিপ্লেসমেন্টের একটি উদাহরণ দেখাতে পারেন?
- 7.5 প্রশ্ন ৫. তারিখের ফরম্যাট রূপান্তর করার জন্য কী কুয়েরি?
- 7.6 প্রশ্ন ৬. REGEXP ব্যবহার করে একাধিক শর্ত কীভাবে নির্দিষ্ট করবেন?
- 7.7 সারাংশ
1. পরিচিতি
MySQL রেগুলার এক্সপ্রেশন (REGEXP) কী?
MySQL রেগুলার এক্সপ্রেশনগুলি ডাটাবেসের মধ্যে স্ট্রিংগুলি নমনীয়ভাবে অনুসন্ধান এবং পরিচালনা করার জন্য শক্তিশালী টুল। এগুলি উন্নত প্যাটার্ন ম্যাচিং সক্ষম করে যা সাধারণ স্ট্রিং অনুসন্ধানের মাধ্যমে অর্জন করা কঠিন, এবং আপনাকে নির্দিষ্ট ফরম্যাট বা শর্তের সাথে মিলে এমন ডেটা বের করতে সাহায্য করে।
উদাহরণস্বরূপ, আপনি সহজেই “নির্দিষ্ট অক্ষর দিয়ে শুরু হওয়া নাম” অথবা “শুধুমাত্র সংখ্যামূলক মান ধারণকারী কোড” এর মতো ডেটা বের করতে পারেন। এই ফাংশনালিটি ডেটা পরিষ্কার করা এবং জটিল অনুসন্ধান শর্তগুলি পরিচালনার জন্য বিশেষভাবে উপযোগী।
MySQL-এ রেগুলার এক্সপ্রেশন ব্যবহারের সুবিধা
- জটিল অনুসন্ধান শর্তের সমর্থন
- আপনি এমন জটিল স্ট্রিং প্যাটার্ন নির্ধারণ করতে পারেন যা স্ট্যান্ডার্ড LIKE অপারেটর দ্বারা পরিচালিত হতে পারে না।
- ডেটার ব্যাচ এক্সট্র্যাকশন এবং প্রতিস্থাপন
- উদাহরণস্বরূপ, আপনি নির্দিষ্ট ফরম্যাটের সাথে মিলে এমন ডেটা শুধুমাত্র বের করতে পারেন অথবা স্ট্রিংয়ের কোনো অংশ প্রতিস্থাপন করতে পারেন।
- MySQL 8.0 এবং পরবর্তী সংস্করণে উন্নত বৈশিষ্ট্য
- REGEXP_LIKE এবং REGEXP_SUBSTR এর মতো নতুন ফাংশন যোগ করা হয়েছে, যা আরও নমনীয় অপারেশন সম্ভব করে।
এই প্রবন্ধের উদ্দেশ্য
এই প্রবন্ধে MySQL রেগুলার এক্সপ্রেশন (REGEXP) এর মৌলিক ব্যবহার থেকে উন্নত উদাহরণ এবং গুরুত্বপূর্ণ বিবেচনা পর্যন্ত সবকিছু ব্যাখ্যা করা হয়েছে। আপনি যদি নবীন হন বা অর্ধ-পেশাদার, তবুও বাস্তবিক অন্তর্দৃষ্টি পাবেন যা বাস্তব জগতে প্রয়োগযোগ্য।
পরবর্তী অংশে, আমরা MySQL-এ রেগুলার এক্সপ্রেশনের মৌলিক বিষয়গুলি ব্যাখ্যা করব।
2. MySQL-এ রেগুলার এক্সপ্রেশনের মৌলিক বিষয়
REGEXP অপারেটর কী?
MySQL-এ, REGEXP অপারেটরটি রেগুলার এক্সপ্রেশন নিয়ে কাজ করতে ব্যবহৃত হয়। এই অপারেটরটি নির্ধারণ করে যে কোনো মান নির্দিষ্ট প্যাটার্নের সাথে মেলে কিনা। এছাড়াও, RLIKE হল REGEXP এর একটি উপনাম।
নিম্নলিখিত উদাহরণটি পরীক্ষা করে যে কোনো স্ট্রিং “abc” প্যাটার্নের সাথে মেলে কিনা।
SELECT * FROM users WHERE name REGEXP 'abc';
REGEXP অপারেটরের মৌলিক সিনট্যাক্স
রেগুলার এক্সপ্রেশন দিয়ে অনুসন্ধানের মৌলিক সিনট্যাক্স নিম্নরূপ:
SELECT * FROM table_name WHERE column_name REGEXP 'pattern';
সাধারণ REGEXP প্যাটার্ন তালিকা
| Symbol | Description | Example |
|---|---|---|
^ | Matches the beginning of a line | ^abc → Strings that start with “abc” |
$ | Matches the end of a line | abc$ → Strings that end with “abc” |
. | Matches any single character | a.c → Matches “abc”, “adc”, etc. |
| | OR (matches either pattern) | abc|xyz → Matches “abc” or “xyz” |
[] | Matches any one of the specified characters | [abc] → Matches “a”, “b”, or “c” |
* | Matches zero or more repetitions | ab*c → Matches “ac”, “abc”, “abbc”, etc. |
REGEXP এবং LIKE এর পার্থক্য
| Feature | LIKE | REGEXP |
|---|---|---|
| Flexibility | Supports only wildcards (% and _) | Supports advanced pattern matching |
| Performance | Fast | May be slightly slower for complex patterns |
ব্যবহারিক উদাহরণ: REGEXP দিয়ে অনুসন্ধান
উদাহরণ ১: বৈধ ইমেইল ফরম্যাট অনুসন্ধান
SELECT * FROM users WHERE email REGEXP '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$';
উদাহরণ ২: শুধুমাত্র সংখ্যাসহ ফিল্ড অনুসন্ধান
SELECT * FROM orders WHERE order_id REGEXP '^[0-9]+$';
সারাংশ
এই অংশে, আমরা MySQL-এ REGEXP অপারেটরের মৌলিক ব্যবহার এবং প্যাটার্নগুলি আলোচনা করেছি। এটি সহজ অনুসন্ধান থেকে উন্নত প্যাটার্ন ম্যাচিং পর্যন্ত সবকিছু সম্ভব করে, যা নমনীয় ডেটা অপারেশনের জন্য সহায়ক।
3. MySQL 8.0-এ যোগ করা রেগুলার এক্সপ্রেশন ফাংশনগুলি
REGEXP_LIKE() – রেগুলার এক্সপ্রেশন ব্যবহার করে ম্যাচ চেক
REGEXP_LIKE(string, pattern [, flags])
উদাহরণ:
SELECT REGEXP_LIKE('abcdef', 'abc');
ফলাফল: 1 (ম্যাচ হয়েছে)
REGEXP_INSTR() – ম্যাচের অবস্থান খুঁজে বের করা
REGEXP_INSTR(string, pattern [, start_position, occurrence, flags, return_type])
উদাহরণ:
SELECT REGEXP_INSTR('abcdef', 'cd');
ফলাফল: ৩
REGEXP_SUBSTR() – ম্যাচ করা সাবস্ট্রিং বের করা
REGEXP_SUBSTR(string, pattern [, start_position, occurrence, flags])
উদাহরণ:
SELECT REGEXP_SUBSTR('abc123def', '[0-9]+');
ফলাফল: ১২৩
REGEXP_REPLACE() – রেগুলার এক্সপ্রেশন ব্যবহার করে প্রতিস্থাপন
REGEXP_REPLACE(string, pattern, replacement [, start_position, occurrence, flags])
উদাহরণ:
SELECT REGEXP_REPLACE('Item123Price456', '[0-9]', '#');
ফলাফল: Item###Price###
সারাংশ
MySQL 8.0-এ যোগ করা রেগুলার এক্সপ্রেশন ফাংশনগুলি বিশদ এবং নমনীয় স্ট্রিং অপারেশন সম্ভব করে। সেগুলি কার্যকরভাবে ব্যবহার করে আপনি ডেটা আরও দক্ষতার সঙ্গে বের এবং রূপান্তর করতে পারেন।

4. রেগুলার এক্সপ্রেশনের ব্যবহারিক উদাহরণ
নির্দিষ্ট প্যাটার্নের সাথে মিলে এমন ডেটা অনুসন্ধান
উদাহরণ ১: ইমেইল ঠিকানা ফরম্যাট সনাক্ত করুন
SELECT * FROM users WHERE email REGEXP '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$';
উদাহরণ ২: ফোন নম্বর ফরম্যাট সনাক্ত করুন
SELECT * FROM contacts WHERE phone REGEXP '^[0-9]{3}-[0-9]{4}-[0-9]{4}$';
সাবস্ট্রিং বের করা
উদাহরণ ১: সংখ্যাসূচক অংশ বের করুন
SELECT REGEXP_SUBSTR('abc123def456', '[0-9]+');
ফলাফল: 123
ডেটা প্রতিস্থাপন
উদাহরণ ১: সংখ্যাগুলোকে “#” দিয়ে প্রতিস্থাপন করুন
SELECT REGEXP_REPLACE('Item123Price456', '[0-9]', '#');
ফলাফল: Item###Price###
ডেটা যাচাই এবং পরিষ্কার
উদাহরণ ১: অবৈধ ইমেইল ঠিকানা সনাক্ত করুন
SELECT * FROM users WHERE email NOT REGEXP '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$';
সারসংক্ষেপ
এই উদাহরণগুলো দিয়ে, আপনি অনুসন্ধান, বের করা, প্রতিস্থাপন এবং ডেটা যাচাইয়ের মতো কাজগুলো দক্ষতার সাথে পরিচালনা করতে পারেন।
5. গুরুত্বপূর্ণ বিবেচনা এবং সেরা অনুশীলনসমূহ
মাল্টিবাইট অক্ষর (পূর্ণ-প্রস্থ অক্ষর) পরিচালনা
ডিফল্টভাবে MySQL রেগুলার এক্সপ্রেশনগুলো বাইট ভিত্তিতে মূল্যায়ন করা হয়, তাই জাপানি অক্ষরের মতো মাল্টিবাইট অক্ষর পরিচালনা করার সময় বিশেষ সতর্কতা প্রয়োজন।
সমাধান:
ALTER TABLE users CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
পারফরম্যান্সের উপর প্রভাব
সমস্যা: রেগুলার এক্সপ্রেশনগুলো জটিল প্রক্রিয়াকরণ জড়িত হওয়ায়, বড় ডেটাসেট অনুসন্ধান করার সময় পারফরম্যান্স হ্রাস পেতে পারে।
সমাধান:
SELECT * FROM users WHERE email LIKE '%@example.com' AND email REGEXP '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$';
ReDoS (রেগুলার এক্সপ্রেশন ডিনায়াল অফ সার্ভিস) থেকে সুরক্ষা
সমস্যা: দূষিত প্যাটার্নগুলো অতিরিক্ত সিস্টেম লোড সৃষ্টি করতে পারে।
সমাধান:
- সম্ভব হলে সহজ প্যাটার্ন ব্যবহার করুন।
- ইনপুট যাচাই শক্তিশালী করুন।
- কুয়েরি এক্সিকিউশন সময় পর্যবেক্ষণ করুন।
সংস্করণ সামঞ্জস্যতা পরীক্ষা করুন
নতুন রেগুলার এক্সপ্রেশন ফাংশনগুলো MySQL 8.0 এর আগের সংস্করণে উপলব্ধ নয়। বাস্তবায়নের আগে সর্বদা আপনার পরিবেশের সংস্করণ যাচাই করুন।
স্টেজিং পরিবেশে পরীক্ষা করুন
কুয়েরি আচরণ এবং পারফরম্যান্স পূর্বে পরীক্ষা করুন, যার মধ্যে এজ কেস এবং অবৈধ মানগুলো কীভাবে পরিচালিত হয় তা অন্তর্ভুক্ত।
সারসংক্ষেপ
পারফরম্যান্স এবং নিরাপত্তা উভয়ই বিবেচনা করে রেগুলার এক্সপ্রেশনগুলো নিরাপদ এবং দক্ষভাবে ব্যবহার করার জন্য এই সেরা অনুশীলনগুলো মনে রাখুন।
6. উপসংহার
মূল বিষয়গুলো
- মৌলিক অপারেশন এবং রেগুলার এক্সপ্রেশন প্যাটার্ন শিখে, আপনি সহজ অনুসন্ধান থেকে জটিল ডেটা এক্সট্রাকশন পর্যন্ত সবকিছু পরিচালনা করতে পারেন।
- MySQL 8.0-এ পরিচিত রেগুলার এক্সপ্রেশন ফাংশনগুলো আরও নমনীয় অপারেশন সম্ভব করে।
- ব্যবহারিক উদাহরণ ব্যবহার করে বাস্তব ডেটা ম্যানিপুলেশনে দক্ষতা বৃদ্ধি পায়।
- সেরা অনুশীলন প্রয়োগ করে নিরাপদ এবং উচ্চ পারফরম্যান্সের কুয়েরি নিশ্চিত করা যায়।
MySQL রেগুলার এক্সপ্রেশন ব্যবহারের সুবিধা
- উন্নত অনুসন্ধান ক্ষমতা: সহজ স্ট্রিং অনুসন্ধানের মাধ্যমে কঠিন শর্তগুলো সহজে সংজ্ঞায়িত করা যায়।
- ডেটা প্রক্রিয়াকরণ দক্ষতা উন্নত: এক্সট্রাকশন, প্রতিস্থাপন এবং যাচাই সরাসরি SQL-এ সম্পন্ন করা যায়।
- বিস্তৃত প্রয়োগের পরিসর: ডেটা ক্লিনসিং থেকে লগ বিশ্লেষণ পর্যন্ত সবকিছুর জন্য উপযোগী।
কীভাবে শিখতে এবং প্রয়োগ চালিয়ে যাবেন
- বাস্তব ডেটাসেট ব্যবহার করে কুয়েরি অনুশীলন করুন যাতে আপনার বোঝাপড়া গভীর হয়।
- সর্বশেষ সংস্করণের ফিচারগুলো সক্রিয়ভাবে ব্যবহার করে পারফরম্যান্স অপ্টিমাইজ করুন।
- নিরাপত্তা এবং গতি বজায় রাখতে নিয়মিত আপনার কুয়েরি পর্যালোচনা করুন।
শেষ মন্তব্য
MySQL রেগুলার এক্সপ্রেশনগুলো আয়ত্ত করে, আপনি অপারেশনাল দক্ষতা বাড়াতে এবং আপনার ডেটা বিশ্লেষণ ক্ষমতা উন্নত করতে পারবেন।
7. প্রায়শই জিজ্ঞাসিত প্রশ্ন (FAQ)
Q1. MySQL-এ REGEXP এবং LIKE এর মধ্যে পার্থক্য কী?
উ: REGEXP উন্নত প্যাটার্ন ম্যাচিং সমর্থন করে, যেখানে LIKE প্রধানত আংশিক স্ট্রিং ম্যাচিংয়ের জন্য ব্যবহৃত হয়।
SELECT * FROM users WHERE email LIKE '%example.com';
SELECT * FROM users WHERE email REGEXP '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$';
প্রশ্ন ২. পারফরম্যান্স কীভাবে উন্নত করা যায়?
উত্তর:
- ফিল্টার শর্তগুলি আগে থেকেই প্রয়োগ করুন।
- সূচকগুলি কার্যকরভাবে ব্যবহার করুন।
- কুয়েরিগুলি সহজ এবং অপ্টিমাইজড রাখুন।
প্রশ্ন ৩. মাল্টিবাইট অক্ষরগুলি কীভাবে পরিচালনা করবেন?
উত্তর: UTF-8 সমর্থন কনফিগার করুন।
ALTER TABLE users CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
প্রশ্ন ৪. রেগুলার এক্সপ্রেশন ব্যবহার করে রিপ্লেসমেন্টের একটি উদাহরণ দেখাতে পারেন?
উত্তর: সংখ্যাগুলি “#” দিয়ে প্রতিস্থাপন করুন।
SELECT REGEXP_REPLACE('Item123Price456', '[0-9]', '#');
প্রশ্ন ৫. তারিখের ফরম্যাট রূপান্তর করার জন্য কী কুয়েরি?
উত্তর: “YYYY/MM/DD” কে “YYYY-MM-DD” এ পরিবর্তন করুন।
SELECT REGEXP_REPLACE('2023/12/20', '/', '-');
প্রশ্ন ৬. REGEXP ব্যবহার করে একাধিক শর্ত কীভাবে নির্দিষ্ট করবেন?
উত্তর: পাইপ চিহ্ন (|) ব্যবহার করুন।
SELECT * FROM products WHERE name REGEXP 'phone|tablet';
সারাংশ
FAQ বিভাগটি সাধারণ প্রশ্নগুলোর উত্তর দিয়েছে এবং ব্যবহারিক কুয়েরি উদাহরণ প্রদান করেছে।


