MySQL-এ কমা-সেপারেটেড স্ট্রিং কলামকে দুটি আলাদা কলামে (First Name, Last Name) ভাগ করতে SUBSTRING_INDEX() ফাংশন ব্যবহার করা হয়।
উদাহরণ
টেবিল তৈরি:
CREATE TABLE demo79 (fullname VARCHAR(50));
INSERT INTO demo79 VALUES ('John,Smith'), ('David,Miller'), ('Chris,Brown');
টেবিলের ডেটা:
+--------------+ | fullname | +--------------+ | John,Smith | | David,Miller | | Chris,Brown | +--------------+
কোয়েরি
SELECT
fullname,
SUBSTRING_INDEX(fullname, ',', 1) AS First_Name,
SUBSTRING_INDEX(fullname, ',', -1) AS Last_Name
FROM demo79;
আউটপুট
+--------------+------------+-----------+ | fullname | First_Name | Last_Name | +--------------+------------+-----------+ | John,Smith | John | Smith | | David,Miller | David | Miller | | Chris,Brown | Chris | Brown | +--------------+------------+-----------+
ব্যাখ্যা:
SUBSTRING_INDEX(str, delim, count)count = 1-> প্রথম কমার আগের অংশ (First Name)।count = -1-> শেষ কমার পরের অংশ (Last Name)।- যদি একাধিক কমা থাকে (যেমন 'John,Middle,Smith'),
count=1-> 'John',count=-1-> 'Smith'।
সীমাবদ্ধতা: এটি শুধু ২টা পার্টে ভাগ করতে পারে। একাধিক পার্টে ভাগ করতে (split to rows) MySQL 8.0-এ JSON_TABLE বা রিকারসিভ CTE ব্যবহার করতে হয়।
বিকল্প: SUBSTRING_INDEX(SUBSTRING_INDEX(fullname, ',', 2), ',', -1) দিয়ে ২য় পার্ট বের করা যায়।