একটি কলামে হাইফেন (-) দিয়ে আলাদা করা মান (যেমন '101-John-29') আলাদা আলাদা কলামে বির্ভক্ত করতে SUBSTRING_INDEX() ফাংশন নেস্টেডভাবে ব্যবহার করা হয়।
টেবিল ও ডেটা তৈরি
mysql> CREATE TABLE DemoTable1962 (EmployeeInformation TEXT);
mysql> INSERT INTO DemoTable1962 VALUES
('101-John-29'), ('102-David-35'), ('103-Chris-28');
ডেটা যাচাই
mysql> SELECT * FROM DemoTable1962;
+---------------------+ | EmployeeInformation | +---------------------+ | 101-John-29 | | 102-David-35 | | 103-Chris-28 | +---------------------+
কোয়ারী: ৩টি কলামে ভাগ করা
mysql> SELECT
SUBSTRING_INDEX(EmployeeInformation, '-', 1) AS EmployeeId,
SUBSTRING_INDEX(SUBSTRING_INDEX(EmployeeInformation, '-', 2), '-', -1) AS EmployeeName,
SUBSTRING_INDEX(SUBSTRING_INDEX(EmployeeInformation, '-', -2), '-', -1) AS EmployeeAge
FROM DemoTable1962;
স্টেপ-বাই-স্টেপ ব্যাখ্যা:
- EmployeeId:
SUBSTRING_INDEX(str, '-', 1)— প্রথম হাইফেনের বামপাশ। - EmployeeName:
- ইননার:
SUBSTRING_INDEX(str, '-', 2)— প্রথম ২টি অংশ ('101-John')। - আউটার:
SUBSTRING_INDEX(..., '-', -1)— সেটির শেষ হাইফেনের ডানপাশ ('John')।
- ইননার:
- EmployeeAge:
- ইননার:
SUBSTRING_INDEX(str, '-', -2)— শেষ ২টি অংশ ('John-29')। - আউটার:
SUBSTRING_INDEX(..., '-', -1)— সেটির শেষ হাইফেনের ডানপাশ ('29')।
- ইননার:
আউটপুট:
+------------+--------------+-------------+ | EmployeeId | EmployeeName | EmployeeAge | +------------+--------------+-------------+ | 101 | John | 29 | | 102 | David | 35 | | 103 | Chris | 28 | +------------+--------------+-------------+
MySQL 8.0+ এ REGEXP_SUBSTR (সरल)
SELECT
REGEXP_SUBSTR(EmployeeInformation, '^[^-]+') AS EmployeeId,
REGEXP_SUBSTR(EmployeeInformation, '(?<=-)[^-]+(?=-)') AS EmployeeName,
REGEXP_SUBSTR(EmployeeInformation, '[^-]+$') AS EmployeeAge
FROM DemoTable1962;
সতর্কতা
- হাইফেন সংখ্যা ফিক্সড (৩ পার্ট) থাকলেই এই পদ্ধতি কাজ করে।
- ভিন্ন সংখ্যক পার্ট হলে ডাইনামিক পারসিং বা অ্যাপ্লিকেশন লেয়ারে হ্যান্ডল করুন।
- নামে হাইফেন থাকলে (যেমন 'Mary-Jane') এই পদ্ধতি ভুল দেবে।
সর্বোত্তম অনুশীলন
নরমালাইজড স্কিমা ডিজাইন করুন: আলাদা কলামে EmployeeId, EmployeeName, EmployeeAge সংরক্ষণ করুন। স্ট্রিং পারসিং এড়িয়ে চলুন।