MySQL-এ কমা-সেপারেটেড সংখ্যা (মাস নম্বর) থাকলে সেগুলো মहीনামে রূপান্তর করতে CASE স্টেটমেন্ট এবং FIND_IN_SET() ফাংশন কম্বাইন করে ব্যবহার করা হয়।
টেবিল এবং ডেটা
CREATE TABLE DemoTable1629 (
Month VARCHAR(100)
);
INSERT INTO DemoTable1629 VALUES('2,4,6');
INSERT INTO DemoTable1629 VALUES('1,3,5,12');
INSERT INTO DemoTable1629 VALUES('7,8,9,10');
কুয়েরি
SELECT TRIM(TRAILING ',' FROM CONCAT(
CASE WHEN FIND_IN_SET(1, Month) THEN 'January,' ELSE '' END,
CASE WHEN FIND_IN_SET(2, Month) THEN 'February,' ELSE '' END,
CASE WHEN FIND_IN_SET(3, Month) THEN 'March,' ELSE '' END,
CASE WHEN FIND_IN_SET(4, Month) THEN 'April,' ELSE '' END,
CASE WHEN FIND_IN_SET(5, Month) THEN 'May,' ELSE '' END,
CASE WHEN FIND_IN_SET(6, Month) THEN 'June,' ELSE '' END,
CASE WHEN FIND_IN_SET(7, Month) THEN 'July,' ELSE '' END,
CASE WHEN FIND_IN_SET(8, Month) THEN 'August,' ELSE '' END,
CASE WHEN FIND_IN_SET(9, Month) THEN 'September,' ELSE '' END,
CASE WHEN FIND_IN_SET(10, Month) THEN 'October,' ELSE '' END,
CASE WHEN FIND_IN_SET(11, Month) THEN 'November,' ELSE '' END,
CASE WHEN FIND_IN_SET(12, Month) THEN 'December,' ELSE '' END
)) FROM DemoTable1629;
ফলাফল
+--------------------------------------------------+
| February,April,June |
| January,March,May,December |
| July,August,September,October |
+--------------------------------------------------+
ব্যাখ্যা
FIND_IN_SET(n, Month)— n-এম্বার মাস লিস্টে আছে কিনা চেক করেCASE WHEN ... THEN 'Name,' ELSE '' END— থাকলে নাম যোগ করে, নাইলে খালিCONCAT(...)— সব মहीনাম একসাথে জোড়ায়TRIM(TRAILING ',' FROM ...)— শেষের কমা সরিয়ে ফেলে
নোট
এই পদ্ধতি হардকোডেড এবং ১২ মাস পর্যন্ত সীমাবদ্ধ। ডাইনামিক সমাধানের জন্য নরমালাইজড টেবিল (month_id, month_name) ব্যবহার করা উচিত।