MySQL-এ একটি কলামের ভ্যালু ডিলিমিটার (যেমন '_') দিয়ে বিভক্ত করে অংশ বের করার জন্য SUBSTRING_INDEX() ফাংশন ব্যবহার করা হয়।
টেবিল এবং ডেটা
CREATE TABLE DemoTable (
Name VARCHAR(40)
);
INSERT INTO DemoTable VALUES('John_Smith');
INSERT INTO DemoTable VALUES('Carol_Taylor');
INSERT INTO DemoTable VALUES('David_Miller');
কুয়েরি: প্রথম অংশ (আন্ডারস্কোরের আগে) বের করা
SELECT IF(
LOCATE('_', Name) = 0,
'',
SUBSTRING_INDEX(Name, '_', 1)
) FROM DemoTable;
ফলাফল
+---------------------------------------------------------+
| if(locate('_',Name)=0,'',substring_index(Name, '_', 1)) |
+---------------------------------------------------------+
| John |
| Carol |
| David |
+---------------------------------------------------------+
ফাংশন ব্যাখ্যা
LOCATE('_', Name)— '_' এর পজিশন বের করে (পাওয়া নাও গেলে ০)IF(LOCATE(...) = 0, '', ...)— '_' না থাকলে খালি স্ট্রিং রিটার্নSUBSTRING_INDEX(Name, '_', 1)— প্রথম '_' এর আগের অংশ (১ = বাম পাশ)
দ্বিতীয় অংশ (ডান পাশ) বের করা
SELECT IF(
LOCATE('_', Name) = 0,
'',
SUBSTRING_INDEX(Name, '_', -1)
) FROM DemoTable;
ফলাফল: Smith, Taylor, Miller
MySQL 8.0+: JSON_TABLE ব্যবহার (অ্যারে-তে রূপান্তর)
SELECT jt.part FROM DemoTable,
JSON_TABLE(
CONCAT('["', REPLACE(Name, '_', '","'), '"]'),
'$[*]' COLUMNS(part VARCHAR(50) PATH '$')
) AS jt;
এটি সকল অংশ আলাদা রো হিসেবে দেবে।