दिए गए वैल्यू की जांच करने के लिए कि यह स्ट्रिंग है या नहीं, हम CAST() फंक्शन का उपयोग करते हैं। यदि वैल्यू न्यूमेरिक नहीं है तो यह 0 लौटाता है, अन्यथा यह न्यूमेरिक वैल्यू लौटाएगा। इस तरह, हम चेक कर सकते हैं कि वैल्यू इंटीजर है या नहीं।
केस 1 − इंटीजर्स के साथ स्ट्रिंग की जांच
mysql> select CAST('John123456' AS UNSIGNED);
आउटपुट निम्न है। यह दिखाता है कि वैल्यू न्यूमेरिक नहीं है, इसलिए 0 लौटाया गया है।
+--------------------------------+
| CAST('John123456' AS UNSIGNED) |
+--------------------------------+
| 0 |
+--------------------------------+
1 row in set, 1 warning (0.00 sec)
केस 2 − केवल इंटीजर वैल्यूज़ की जांच
mysql> select CAST('123456' AS UNSIGNED);
आउटपुट निम्न है। यह दिखाता है कि वैल्यू न्यूमेरिक है, इसलिए वैल्यू स्वयं लौटाई गई है।
+----------------------------+
| CAST('123456' AS UNSIGNED) |
+----------------------------+
| 123456 |
+----------------------------+
1 row in set (0.00 sec)
यह लॉजिक फ्लोट के लिए भी अच्छा काम करता है।
फ्लोट वैल्यू के साथ क्वेरी निम्न है।
mysql> SELECT CAST('78.90' AS UNSIGNED);
आउटपुट यहाँ है।
+---------------------------+
| CAST('78.90' AS UNSIGNED) |
+---------------------------+
| 78 |
+---------------------------+
1 row in set, 1 warning (0.00 sec)
रेगुलर ऑपरेटर के साथ वैकल्पिक लॉजिक
यह किसी भी वैल्यू के लिए सभी कंडीशन्स के लिए काम करता है, यहां तक कि फ्लोट के लिए भी।
आइए एक नई टेबल बनाते हैं।
mysql> create table CheckingIntegerDemo -> ( -> Value varchar(200) -> ); Query OK, 0 rows affected (0.88 sec)
टेबल में रिकॉर्ड्स इन्सर्ट करना।
mysql> insert into CheckingIntegerDemo values('John123456');
Query OK, 1 row affected (0.10 sec)
mysql> insert into CheckingIntegerDemo values('123456');
Query OK, 1 row affected (0.16 sec)
mysql> insert into CheckingIntegerDemo values('123.456');
Query OK, 1 row affected (0.16 sec)
सभी रिकॉर्ड्स डिस्प्ले करने के लिए।
mysql> select * from CheckingIntegerDemo;
आउटपुट यहाँ है।
+------------+ | Value | +------------+ | John123456 | | 123456 | | 123.456 | +------------+ 3 rows in set (0.00 sec)
उपरोक्त आउटपुट में, केवल 123456 एक इंटीजर है और बाकी नहीं हैं।
चेक करने का सिंटैक्स कि वैल्यू इंटीजर है।
SELECT yourColumnName FROM yourTableName WHERE yourColumnName REGEXP '^-?[0-9]+$';
क्वेरी जिसमें हमने रेगुलर एक्सप्रेशन का उपयोग किया है। यह केवल इंटीजर वैल्यू आउटपुट करेगा।
mysql> select Value from CheckingIntegerDemo where Value REGEXP '^-?[0-9]+$';
आउटपुट निम्न है।
+--------+ | Value | +--------+ | 123456 | +--------+ 1 row in set (0.00 sec)