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

MySQL में CAST() का उपयोग करके VARCHAR फ़ील्ड में संख्याओं की तुलना करना

MySQL में CAST() फ़ंक्शन का उपयोग करके VARCHAR कॉलम में संग्रहीत संख्यात्मक स्ट्रिंग्स की संख्यात्मक तुलना करें।

उदाहरण: टेबल बनाना और डेटा डालना

mysql> CREATE TABLE DemoTable (
    -> StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> StudentScore VARCHAR(100)
    -> );
Query OK, 0 rows affected (0.66 sec)
mysql> INSERT INTO DemoTable(StudentScore) VALUES('90'), ('100'), ('56'), ('98');

सभी रिकॉर्ड देखना

mysql> SELECT * FROM DemoTable;

आउटपुट

+-----------+--------------+
| StudentId | StudentScore |
+-----------+--------------+
| 1         | 90           |
| 2         | 100          |
| 3         | 56           |
| 4         | 98           |
+-----------+--------------+
4 rows in set (0.00 sec)

कॉलम VARCHAR है, इसलिए स्ट्रिंग तुलना होगी: '100' < '56' (क्योंकि '1' < '5')।

CAST के साथ संख्यात्मक तुलना

mysql> SELECT * FROM DemoTable WHERE CAST(StudentScore AS SIGNED) > 91;

आउटपुट

+-----------+--------------+
| StudentId | StudentScore |
+-----------+--------------+
| 2         | 100          |
| 4         | 98           |
+-----------+--------------+
2 rows in set (0.00 sec)

सही परिणाम: 100 और 98, 91 से अधिक हैं।

CAST विकल्प:

  • AS SIGNED - हस्ताक्षरित पूर्णांक (ऋणात्मक संभव)
  • AS UNSIGNED - बिना हस्ताक्षर वाला पूर्णांक (केवल धनात्मक)
  • AS DECIMAL(10,2) - दशमलव संख्या
  • AS CHAR - स्ट्रिंग (डिफ़ॉल्ट)

शॉर्टकट: StudentScore + 0 या StudentScore * 1 भी संख्यात्मक संदर्भ में कास्ट करता है।

सावधानी: गैर-संख्यात्मक स्ट्रिंग (जैसे 'abc') कास्ट करने पर 0 बन जाता है (चेतावनी के साथ)। डेटा सत्यापन के लिए StudentScore REGEXP '^[0-9]+$' पहले जांचें।

बेहतर डिज़ाइन: संख्यात्मक डेटा के लिए VARCHAR के बजाय INT, DECIMAL जैसे संख्यात्मक डेटा प्रकार का उपयोग करें।

  1. - क्या MySQL में एस्टेरिस्क (*) वाले फील्ड नाम को चुन सकते हैं?

    उत्तर नहीं, सीधे नहीं। एस्टेरिस्क (*) SQL में विशेष वर्ण है (सभी कॉलम, गुणा, वाइल्डकार्ड)। फील्ड नाम में विशेष वर्ण होने पर बैकटिक्स (`) में घेरना आवश्यक है। उदाहरण: एस्टेरिस्क वाले कॉलम नाम के साथ टेबल बनाना ); Query OK, 0 rows affected (2.03 sec) डेटा डालना INSERT INTO DemoTable(`Name*`) VALUE

  1. - MySQL में स्ट्रिंग और संख्या वाले VARCHAR रिकॉर्ड को कैसे क्रमबद्ध करें?

    MySQL में अल्फान्यूमेरिक कोड (जैसे 100A, 101J) को संख्यात्मक भाग के अनुसार क्रमबद्ध करने के लिए ORDER BY column+0, column तकनीक का उपयोग करें। समस्या स्ट्रिंग क्रम: 100A, 100B, 101J, 101S, 103M (लेक्सिकोग्राफिक) वांछित क्रम: संख्यात्मक भाग पहले, फिर अक्षर उदाहरण mysql> CREATE TABLE DemoTable (S

  1. - MySQL में VARCHAR स्ट्रिंग से हाइफ़न के बाद की संख्याओं को कैसे हटाएं

    समाधान SUBSTRING_INDEX() फंक्शन का उपयोग करके हाइफ़न से पहले का भाग प्राप्त करें। उदाहरण टेबल बनाएं: INSERT INTO DemoTable2040 VALUES (John-232), (Carol-901), (David-987); अपडेट क्वेरी UPDATE DemoTable2040 SET StudentCode = SUBSTRING_INDEX(StudentCode, -, 1); परिणाम +-------------+ | StudentCod