अंतिम डिलीमीटर से पहले का सबस्ट्रिंग निकालना
स्ट्रिंग के अंतिम डिलीमीटर (जैसे '$') से पहले का भाग प्राप्त करने के लिए LEFT(), CHAR_LENGTH(), LOCATE(), और REVERSE() फंक्शन्स को मिलाएं।
आइए पहले एक टेबल बनाते हैं:
mysql> CREATE TABLE DemoTable (
Title TEXT
);
रिकॉर्ड्स इन्सर्ट करें:
mysql> INSERT INTO DemoTable VALUES ('$/This$is[MySQL]$/MySQL[FirstClass]$MySQL[SecondClass]');
mysql> INSERT INTO DemoTable VALUES ('$/This$is[Java]$/Java[FirstClass]$Java[SecondClass]');
सभी रिकॉर्ड्स देखें:
mysql> SELECT * FROM DemoTable;
आउटपुट:
+--------------------------------------------------------+ | Title | +--------------------------------------------------------+ | $/This$is[MySQL]$/MySQL[FirstClass]$MySQL[SecondClass] | | $/This$is[Java]$/Java[FirstClass]$Java[SecondClass] | +--------------------------------------------------------+
अंतिम '$' से पहले का बायां भाग प्राप्त करने के लिए क्वेरी:
mysql> SELECT LEFT(Title, CHAR_LENGTH(Title) - LOCATE('$', REVERSE(Title))) AS result
FROM DemoTable;
आउटपुट:
+-------------------------------------+ | result | +-------------------------------------+ | $/This$is[MySQL]$/MySQL[FirstClass] | | $/This$is[Java]$/Java[FirstClass] | +-------------------------------------+
चरण-दर-चरण व्याख्या:
- REVERSE(Title): स्ट्रिंग को उलट देता है (अंतिम '$' अब पहला '$' बन जाता है)
- LOCATE('$', REVERSE(Title)): उलटी स्ट्रिंग में पहले '$' की पोजीशन ढूंढता है (यानी मूल स्ट्रिंग में अंतिम '$' की पोजीशन)
- CHAR_LENGTH(Title) - LOCATE(...): मूल स्ट्रिंग की लंबाई घटाकर अंतिम '$' से पहले के वर्णों की संख्या प्राप्त करता है
- LEFT(Title, ...): उस लंबाई तक बायां भाग निकालता है
उदाहरण (पहली पंक्ति):
- मूल:
$/This$is[MySQL]$/MySQL[FirstClass]$MySQL[SecondClass] - उलटा:
ssalC[dnoceS]LQSyM$ssalC[tsriF]LQSyM$/$si$hsiT/$ - उलटे में पहला '$' पोजीशन 16 पर (1-आधारित)
- मूल लंबाई: 58
- बायां भाग लंबाई: 58 - 16 = 42
- परिणाम: पहले 42 वर्ण =
$/This$is[MySQL]$/MySQL[FirstClass]
MySQL 8.0+ में सरल: SUBSTRING_INDEX(Title, '$', -1) अंतिम '$' के बाद का भाग देता है, लेकिन बाएं भाग के लिए सबक्वेरी अभी भी चाहिए।