MySQL-এ অক্ষর ও সংখ্যা মিশ্র স্ট্রিং থেকে শুধু সংখ্যা অংশ বের করার জন্য REVERSE(), FORMAT(), REPLACE() ফাংশনগুলো কম্বাইন করে ব্যবহার করা যায়।
টেবিল তৈরি এবং ডেটা ইনসার্ট
mysql> CREATE TABLE DemoTable (
-> StudentId VARCHAR(100)
-> );
Query OK, 0 rows affected (0.71 sec)
mysql> INSERT INTO DemoTable VALUES('John19383');
mysql> INSERT INTO DemoTable VALUES('Carol9999');
mysql> INSERT INTO DemoTable VALUES('David123456');
সব রেকর্ড দেখানো
mysql> SELECT * FROM DemoTable;
আউটপুট
+-------------+ | StudentId | +-------------+ | John19383 | | Carol9999 | | David123456 | +-------------+ 3 rows in set (0.00 sec)
শুধু সংখ্যা অংশ বের করা
mysql> SELECT REPLACE(REVERSE(FORMAT(REVERSE(StudentId), 0)), ',', '') AS OnlyDigit FROM DemoTable;
আউটপুট
+-----------+ | OnlyDigit | +-----------+ | 19383 | | 9999 | | 123456 | +-----------+ 3 rows in set (0.05 sec)
ব্যাখ্যা (ধাপে ধাপে):
REVERSE(StudentId)— স্ট্রিং উল্টা করে (যেমন '38391nhoJ')।FORMAT(..., 0)— সংখ্যাকে ফরম্যাট করে কমা দিয়ে (যেমন '38,391')। নন-ডিজিট ক্যারেক্টার বাদ পড়ে।REVERSE(...)— আবার উল্টা করে (যেমন '19,383')।REPLACE(..., ',', '')— কমা সরিয়ে শুধু সংখ্যা রেখে (যেমন '19383')।
সীমাবদ্ধতা: এই ট্রিকটি শুধু স্ট্রিং-এর শেষে থাকা সংখ্যা বের করতে কাজ করে। শুরুতে বা মাঝপথে সংখ্যা থাকলে কাজ করবে না। সাধারণ সমাধানের জন্য MySQL 8.0+ এ REGEXP_REPLACE বা UDF ব্যবহার ভালো।