MySQL में RIGHT() और INSTR() फ़ंक्शन का उपयोग करके कॉलम के अंतिम भाग (अंतिम स्पेस के बाद) में पैटर्न खोजें।
उदाहरण: टेबल बनाना और डेटा डालना
mysql> CREATE TABLE DemoTable (
-> EmployeeName VARCHAR(100)
-> );
Query OK, 0 rows affected (0.81 sec)
mysql> INSERT INTO DemoTable VALUES
-> ('Adam Smith'), ('Carol Taylor'), ('David Miller'), ('Chris Evan');
सभी रिकॉर्ड देखना
mysql> SELECT * FROM DemoTable;
आउटपुट
+--------------+ | EmployeeName | +--------------+ | Adam Smith | | Carol Taylor | | David Miller | | Chris Evan | +--------------+ 4 rows in set (0.00 sec)
अंतिम स्पेस के बाद "Mille%" पैटर्न खोजना
mysql> SELECT * FROM DemoTable
-> WHERE RIGHT(EmployeeName, INSTR(EmployeeName, ' ')) LIKE 'Mille%';
आउटपुट
+--------------+ | EmployeeName | +--------------+ | David Miller | +--------------+ 1 row in set (0.00 sec)
व्याख्या:
INSTR(EmployeeName, ' ')- पहले स्पेस की स्थिति खोजता है (बाएं से)RIGHT(EmployeeName, pos)- दाएं से उतने वर्ण लेता है- समस्या: यह लॉजिक त्रुटिपूर्ण है!
INSTRपहले स्पेस की स्थिति देता है, न कि अंतिम स्पेस की। "David Miller" (12 वर्ण) में पहला स्पेस 5वें स्थान पर है, तोRIGHT(..., 5)→ "Miller" देता है जो संयोग से काम करता है। लेकिन "John A Smith" के लिए गलत परिणाम देगा।
सही दृष्टिकोण - अंतिम स्पेस के बाद का भाग:
-- MySQL 8.0+ SELECT * FROM DemoTable WHERE SUBSTRING_INDEX(EmployeeName, ' ', -1) LIKE 'Mille%'; -- या सभी संस्करणों के लिए SELECT * FROM DemoTable WHERE TRIM(SUBSTRING_INDEX(EmployeeName, ' ', -1)) LIKE 'Mille%';
SUBSTRING_INDEX(str, ' ', -1) सीधे अंतिम स्पेस के बाद का भाग लौटाता है।