MySQL में CASE WHEN एक्सप्रेशन का उपयोग करके VARCHAR कॉलम में स्ट्रिंग के शुरुआती अंक के आधार पर सशर्त खोज करें।
उदाहरण: टेबल बनाना और ईमेल डालना
mysql> CREATE TABLE DemoTable (
-> Title VARCHAR(100)
-> );
Query OK, 0 rows affected (0.61 sec)
mysql> INSERT INTO DemoTable VALUES('9John@example.com'), ('3Carol@gmail.com');
सभी रिकॉर्ड देखना
mysql> SELECT * FROM DemoTable;
आउटपुट
+-------------------+ | Title | +-------------------+ | 9John@example.com | | 3Carol@gmail.com | +-------------------+ 2 rows in set (0.00 sec)
CASE WHEN के साथ शुरुआती अंक 9 की जांच
mysql> SELECT CASE WHEN Title = 9 THEN 'Search Successful' ELSE 'Search Unsuccessful' END AS Result FROM DemoTable;
आउटपुट
+---------------------+ | Result | +---------------------+ | Search Successful | | Search Unsuccessful | +---------------------+ 2 rows in set, 2 warnings (0.00 sec)
व्याख्या:
- MySQL स्ट्रिंग की संख्या से तुलना में स्ट्रिंग को संख्या में परिवर्तित करता है
'9John@example.com' = 9→ TRUE (स्ट्रिंग '9' से शुरू होती है, अग्रणी अंक 9 के रूप में पार्स होता है)'3Carol@gmail.com' = 9→ FALSE (3 ≠ 9)- चेतावनी: "Truncated incorrect DOUBLE value" - अप्रत्यक्ष रूपांतरण के कारण
बेहतर/स्पष्ट दृष्टिकोण:
-- पहला वर्ण जांचें SELECT CASE WHEN SUBSTRING(Title, 1, 1) = '9' THEN 'Found' ELSE 'Not Found' END AS Result FROM DemoTable; -- या REGEXP SELECT CASE WHEN Title REGEXP '^9' THEN 'Found' ELSE 'Not Found' END AS Result FROM DemoTable; -- या CAST के साथ स्पष्ट तुलना SELECT CASE WHEN CAST(Title AS UNSIGNED) = 9 THEN 'Found' ELSE 'Not Found' END AS Result FROM DemoTable;
नोट: VARCHAR कॉलम में संख्यात्मक खोज के लिए डेटा प्रकार सही करना (अलग संख्यात्मक कॉलम) बेहतर डिज़ाइन है।