Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में SUBSTRING और CAST से न्यूमेरिक स्ट्रिंग पर तुलना ऑपरेटर उपयोग करें

'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             |
+--------+------------------+

चरण-दर-चरण

  1. INSTR(UserEducationGap, '-') → हाइफ़न की स्थिति (उदाहरण: '5-9' में 2)।
  2. -1 → हाइफ़न से पहले तक की लंबाई।
  3. SUBSTRING(..., 1, len) → पहला भाग निकालें ('5', '2', '4', '7')।
  4. CAST(... AS SIGNED) → पूर्णांक में बदलें।
  5. >= 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]' (केवल एकल अंक के लिए)।
  1. - MySQL में कॉलम में सटीक स्ट्रिंग कैसे खोजें

    BINARY LIKE के साथ केस-सेंसिटिव सटीक स्ट्रिंग खोज केस-सेंसिटिव तरीके से सटीक स्ट्रिंग खोजने के लिए BINARY ऑपरेटर के साथ LIKE और वाइल्डकार्ड % का उपयोग करें। सिंटैक्स SELECT * FROM yourTableName WHERE BINARY yourColumnName LIKE %yourStringValue%; टेबल और डेटा CREATE TABLE DemoTable( Name VARC

  1. - MySQL में कॉमा-अलग स्ट्रिंग को IN() क्लॉज में उपयोग करने की सीमाएं और विकल्प

    MySQL में IN() क्लॉज के अंदर कॉमा-अलग स्ट्रिंग (10,20,50) पास करना **काम नहीं करता** जैसा अपेक्षित होता है। MySQL पूरे स्ट्रिंग को **एकल मान** मानता है, न कि मानों की सूची। यह लेख इस व्यवहार को दर्शाता है और सही विकल्प दिखाता है। समस्या प्रदर्शन टेबल बनाएं: INSERT INTO DemoTable1314 VALUES(90,56,4

  1. - MySQL में सटीक स्ट्रिंग मान कैसे खोजें

    COLLATE utf8_bin का उपयोग करके केस-सेंसिटिव खोज सटीक स्ट्रिंग मान खोजने के लिए COLLATE का उपयोग करें। पहले टेबल बनाएं: create table DemoTable1620 ( Subject varchar(20) ); Query OK, 0 rows affected (0.42 sec) रिकॉर्ड डालें: insert into DemoTable1620 values(MYSQL); Query OK, 1 row affected (0.20 sec