SUBSTRING() और LIKE के साथ अंडरस्कोर के बाद का भाग निकालना
जब स्ट्रिंग में एक डिलीमीटर (जैसे अंडरस्कोर) हो और आपको उसके बाद का भाग चाहिए, तो SUBSTRING() के साथ LOCATE() या स्थितिगत गणना का उपयोग करें।
टेबल और डेटा
mysql> CREATE TABLE DemoTable (
UserName VARCHAR(100)
);
Query OK, 0 rows affected (0.69 sec)
mysql> INSERT INTO DemoTable VALUES('Smith_John');
Query OK, 1 row affected (0.17 sec)
mysql> INSERT INTO DemoTable VALUES('Smith_Adam');
Query OK, 1 row affected (0.10 sec)
mysql> INSERT INTO DemoTable VALUES('Smith_David');
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO DemoTable VALUES('Smith_Mike');
Query OK, 1 row affected (0.12 sec)
सभी रिकॉर्ड
mysql> SELECT * FROM DemoTable;
+-------------+ | UserName | +-------------+ | Smith_John | | Smith_Adam | | Smith_David | | Smith_Mike | +-------------+ 4 rows in set (0.00 sec)
अंडरस्कोर के बाद का भाग निकालने और अपडेट करने की क्वेरी
'Smith_' 6 अक्षर का है, इसलिए 7वें अक्षर से शुरू करें:
mysql> UPDATE DemoTable
SET UserName = SUBSTRING(UserName, 7)
WHERE UserName LIKE 'Smith_%';
Query OK, 4 rows affected (0.12 sec)
Rows matched: 4 Changed: 4 Warnings: 0
अपडेट के बाद रिकॉर्ड
mysql> SELECT * FROM DemoTable;
+----------+ | UserName | +----------+ | John | | Adam | | David | | Mike | +----------+ 4 rows in set (0.00 sec)
बेहतर तरीका: निश्चित स्थिति (7) के बजाय SUBSTRING_INDEX(UserName, '_', -1) का उपयोग करें, जो अंतिम अंडरस्कोर के बाद का भाग देता है और लंबाई बदलने पर भी काम करता है।