REVERSE + LOCATE + SUBSTRING + TRIM দিয়ে শেষ প্যারেনথেসিস ও তার ভেতরের সংখ্যা সরানো
MySQL-এ স্ট্রিংয়ের শেষে থাকা প্যারেনথেসিস ও তার ভেতরের সংখ্যা (যেমন: "1stJohn (7)") সরিয়ে শুধু মূল নাম রাখার জন্য স্ট্রিং ফাংশন চেইন ব্যবহার করা হয়।
টেবিল ও ডেটা
mysql> CREATE TABLE DemoTable (Name VARCHAR(100));
mysql> INSERT INTO DemoTable VALUES('1stJohn'), ('1stJohn (7)'), ('2ndSam'), ('2ndSam (4)');
সব রেকর্ড
+-------------+ | Name | +-------------+ | 1stJohn | | 1stJohn (7) | | 2ndSam | | 2ndSam (4) | +-------------+
কোয়েরি: ট্রেইলিং "(সংখ্যা)" সরানো
mysql> SELECT TRIM(
SUBSTRING(Name, 1,
(CHAR_LENGTH(Name) - LOCATE('(', REVERSE(Name)))
)
) AS RemovingTrailingNumbers FROM DemoTable;
+-------------------------+ | RemovingTrailingNumbers | +-------------------------+ | 1stJohn | | 1stJohn | | 2ndSam | | 2ndSam | +-------------------------+
ধাপে ধাপে ব্যাখ্যা (Name = '1stJohn (7)')
REVERSE(Name)→ ')7( nhoJts1'LOCATE('(', REVERSE(Name))→ ২ (রিভার্স স্ট্রিংয়ে '(' ২ নম্বর পজিশনে)CHAR_LENGTH(Name)→ ১১11 - 2 = 9— কাটার লেন্থSUBSTRING(Name, 1, 9)→ '1stJohn ('TRIM(...)→ '1stJohn' (ট্রেইলিং স্পেস সরায়)
সरल বিকল্প (MySQL 8.0+)
SELECT TRIM(TRAILING ')' FROM SUBSTRING_INDEX(Name, '(', 1)) FROM DemoTable;
বা রেগেক্স (MariaDB/8.0+): REGEXP_REPLACE(Name, '\\s*\\([^)]*\\)$', '')