কম্পিউটার টিউটোরিয়াল

MySQL-এ TRIM() + SUBSTRING() + REVERSE() দিয়ে প্যারেনথেসিসহ ট্রেইলিং সংখ্যা সরানো


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)')

  1. REVERSE(Name) → ')7( nhoJts1'
  2. LOCATE('(', REVERSE(Name)) → ২ (রিভার্স স্ট্রিংয়ে '(' ২ নম্বর পজিশনে)
  3. CHAR_LENGTH(Name) → ১১
  4. 11 - 2 = 9 — কাটার লেন্থ
  5. SUBSTRING(Name, 1, 9) → '1stJohn ('
  6. TRIM(...) → '1stJohn' (ট্রেইলিং স্পেস সরায়)

সरल বিকল্প (MySQL 8.0+)

SELECT TRIM(TRAILING ')' FROM SUBSTRING_INDEX(Name, '(', 1)) FROM DemoTable;

বা রেগেক্স (MariaDB/8.0+): REGEXP_REPLACE(Name, '\\s*\\([^)]*\\)$', '')

  1. কমা-বিচ্ছিন্ন MySQL কলাম থেকে অনুসন্ধান করা

  2. MySQL-এ RTRIM() ফাংশন ব্যবহার করে ট্রেইলিং স্পেস সরানো

  3. MySQL에서 문자로 시작하는 코드(예: J23, C13) 문자+숫자 순으로 정렬하기

  4. MySQL에서 예약어 'from'을 컬럼명으로 쓰려면 백틱으로 감싸기