CAST() और MAX() से संख्यात्मक भाग का अधिकतम मान निकालें
जब कॉलम में 'STU201' जैसे स्ट्रिंग हों जिनमें संख्यात्मक भाग हो, तो CAST() के साथ MAX() का उपयोग करके केवल संख्यात्मक भाग का अधिकतम मान प्राप्त करें।
टेबल और डेटा
mysql> CREATE TABLE DemoTable (
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
StudentBookCode VARCHAR(200)
);
mysql> INSERT INTO DemoTable(StudentBookCode) VALUES('STU201');
mysql> INSERT INTO DemoTable(StudentBookCode) VALUES('STU202');
mysql> INSERT INTO DemoTable(StudentBookCode) VALUES('STU203');
mysql> INSERT INTO DemoTable(StudentBookCode) VALUES('STU290');
mysql> INSERT INTO DemoTable(StudentBookCode) VALUES('STU234');
डेटा देखना
mysql> SELECT * FROM DemoTable;
+----+-----------------+
| Id | StudentBookCode |
+----+-----------------+
| 1 | STU201 |
| 2 | STU202 |
| 3 | STU203 |
| 4 | STU290 |
| 5 | STU234 |
+----+-----------------+
अधिकतम मान क्वेरी
mysql> SELECT MAX(CAST(SUBSTRING(StudentBookCode FROM 4) AS UNSIGNED)) FROM DemoTable;
+----------------------------------------------------------+
| MAX(CAST(SUBSTRING(StudentBookCode FROM 4) AS UNSIGNED)) |
+----------------------------------------------------------+
| 290 |
+----------------------------------------------------------+
व्याख्या
SUBSTRING(StudentBookCode FROM 4)- 4th कैरेक्टर से अंत तक निकालता है ('201', '202', आदि)CAST(... AS UNSIGNED)- स्ट्रिंग को अनसाइन्ड इंटीजर में बदलता हैMAX()- सबसे बड़ा मान लौटाता है
अलग-अलग प्रीफिक्स लंबाई के लिए
यदि प्रीफिक्स लंबाई निश्चित नहीं है, तो SUBSTRING_INDEX() या REGEXP का उपयोग करें:
-- नॉन-न्यूमेरिक प्रीफिक्स हटाने के लिए
SELECT MAX(CAST(REPLACE(REPLACE(StudentBookCode, 'STU', ''), 'ABC', '') AS UNSIGNED)) FROM DemoTable;