'5-9', '2-4' जैसे हाइफ़न-सेपरेटेड न्यूमेरिक स्ट्रिंग कॉलम पर तुलना करने के लिए SUBSTRING + INSTR से पहला नंबर निकालें और CAST(... AS SIGNED) से पूर्णांक में बदलें।
टेबल बनाएं
mysql> CREATE TABLE DemoTable1881 (
UserId INT,
UserEducationGap VARCHAR(20)
);
डेटा डालें
mysql> INSERT INTO DemoTable1881 VALUES(101, '5-9'), (102, '2-4'), (103, '4-8'), (104, '7-12');
पहला नंबर ≥ 4 वाले रिकॉर्ड
mysql> SELECT * FROM DemoTable1881
WHERE CAST(SUBSTRING(UserEducationGap, 1, INSTR(UserEducationGap, '-') - 1) AS SIGNED) >= 4;
आउटपुट:
+--------+------------------+ | UserId | UserEducationGap | +--------+------------------+ | 101 | 5-9 | | 103 | 4-8 | | 104 | 7-12 | +--------+------------------+
चरण-दर-चरण
INSTR(UserEducationGap, '-')→ हाइफ़न की स्थिति (उदाहरण: '5-9' में 2)।-1→ हाइफ़न से पहले तक की लंबाई।SUBSTRING(..., 1, len)→ पहला भाग निकालें ('5', '2', '4', '7')।CAST(... AS SIGNED)→ पूर्णांक में बदलें।>= 4→ तुलना।
सरल विकल्प (MySQL 8.0+)
WHERE CAST(SUBSTRING_INDEX(UserEducationGap, '-', 1) AS SIGNED) >= 4
सुझाव
- संभव हो तो दो अलग कॉलम (
GapStart INT, GapEnd INT) उपयोग करें - इंडेक्सेबल, तेज़, प्रकार-सुरक्षित। - JSON कॉलम:
JSON_EXTRACT(col, '$.start')। - नियमित अभिव्यक्ति:
WHERE UserEducationGap REGEXP '^[4-9]-[0-9]'(केवल एकल अंक के लिए)।