পুরো নাম (FullName) থেকে শেষ শব্দ (সারনেম/উপাধি) বাদ দিয়ে বাকি অংশ বের করতে স্ট্রিং ফাংশন কম্বিনেশন ব্যবহার করা হয়।
টেবিল ও ডেটা তৈরি
mysql> CREATE TABLE DemoTable1939 (FullName VARCHAR(50));
mysql> INSERT INTO DemoTable1939 VALUES
('Adam Smith'), ('Robert Downey, Jr.'), ('Sylvester Stallone'), ('Chris Hemsworth');
ডেটা যাচাই
mysql> SELECT * FROM DemoTable1939;
+--------------------+ | FullName | +--------------------+ | Adam Smith | | Robert Downey, Jr. | | Sylvester Stallone | | Chris Hemsworth | +--------------------+
কোয়েরি: শেষ স্পেসের বামপাশের সবকিছু
mysql> SELECT LEFT(FullName, LENGTH(FullName) - LOCATE(' ', REVERSE(FullName)) + 1)
FROM DemoTable1939;
স্টেপ-বাই-স্টেপ ব্যাখ্যা:
REVERSE(FullName)— স্ট্রিং উল্টো করে (শেষ স্পেস প্রথমে আসে)।LOCATE(' ', REVERSE(...))— উল্টো স্ট্রিংএ প্রথম স্পেসের পজিশন (১-বেসড)।LENGTH(FullName) - LOCATE(...) + 1— মূল স্ট্রিংএ সেই স্পেসের পজিশন।LEFT(FullName, position)— সেই পজিশন পর্যন্ত বামপাশের সাবস্ট্রিং।
আউটপুট:
+---------------------------------------------------------------------+
| LEFT(FullName, LENGTH(FullName) - LOCATE(' ', REVERSE(FullName))+1) |
+---------------------------------------------------------------------+
| Adam |
| Robert Downey, |
| Sylvester |
| Chris |
+---------------------------------------------------------------------+
সরলীকৃত বিকল্প: SUBSTRING_INDEX (MySQL)
SELECT SUBSTRING_INDEX(FullName, ' ',
LENGTH(FullName) - LENGTH(REPLACE(FullName, ' ', '')) -- স্পেস সংখ্যা
) FROM DemoTable1939;
এটি স্পেসের সংখ্যা অনুযায়ী শেষ শব্দ বাদ দেয়। কিন্তু উপরের পদ্ধতিটি সবচেয়ে надеждযোগ্য।
সতর্কতা
- একক শব্দের নাম (যেমন 'Cher') হলে ফলাফল খালি স্ট্রিং হবে।
- ট্রেইলিং স্পেস থাকলে
TRIM()দিন। - MySQL 8.0+ এ
REGEXP_SUBSTR(FullName, '^.*(?= [^ ]+$)')ব্যবহার করা যায় (লুকআহেড)।