चूंकि जिस कॉलम से आप विशेष मान से अधिक मान प्राप्त करना चाहते हैं वह VARCHAR है, CAST() फ़ंक्शन का उपयोग करें। उदाहरण के लिए, varchar मानों वाले कॉलम से 999 से अधिक मान लाने के लिए।
आइए पहले एक टेबल बनाते हैं:
mysql> create table DemoTable (
Value varchar(100) );
Query OK, 0 rows affected (1.02 sec)
इन्सर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें:
mysql> insert into DemoTable values('900');
Query OK, 1 row affected (0.49 sec)
mysql> insert into DemoTable values('1090');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values('860');
Query OK, 1 row affected (0.25 sec)
mysql> insert into DemoTable values('12345');
Query OK, 1 row affected (0.30 sec)
mysql> insert into DemoTable values('908345');
Query OK, 1 row affected (0.16 sec)
सेलेक्ट स्टेटमेंट का उपयोग करके टेबल से सभी रिकॉर्ड प्रदर्शित करें:
mysql> select * from DemoTable;
यह निम्नलिखिक आउटपुट देगा:
+--------+ | Value | +--------+ | 900 | | 1090 | | 860 | | 12345 | | 908345 | +--------+ 5 rows in set (0.00 sec)
VARCHAR कॉलम से विशेष मान से अधिक मान प्राप्त करने की क्वेरी
mysql> select max(cast(Value AS SIGNED)) from DemoTable;
यह निम्नलिखिक आउटपुट देगा:
+----------------------------+ | max(cast(Value AS SIGNED)) | +----------------------------+ | 908345 | +----------------------------+ 1 row in set (0.05 sec)
व्याख्या
CAST(Value AS SIGNED)स्ट्रिंग को साइन किए गए पूर्णांक में बदलता हैMAX()परिवर्तित मानों में से अधिकतम ढूंढता है- स्ट्रिंग तुलना '908345' < '999' होती (लेक्सिकोग्राफिक), इसलिए CAST आवश्यक है
UNSIGNEDकेवल गैर-ऋणात्मक के लिए,SIGNEDऋणात्मक के लिए भी
999 से अधिक सभी मान प्राप्त करें
SELECT Value FROM DemoTable WHERE CAST(Value AS SIGNED) > 999;
परिणाम: 1090, 12345, 908345
सावधानी
गैर-संख्यात्मक स्ट्रिंग्स (जैसे 'abc') CAST के साथ 0 बन जाती हैं। पहले Value REGEXP '^[0-9]+$' से फ़िल्टर करें।