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

MySQL में स्ट्रिंग कॉलम से केवल लागू होने पर संख्यात्मक मान कास्ट और अपडेट करना

परिचय

जब एक VARCHAR कॉलम में मिश्रित डेटा (संख्याएं और गैर-संख्याएं) होता है, और आप केवल संख्यात्मक मानों को निकालकर INTEGER कॉलम में अपडेट करना चाहते हैं, तो MySQL के CAST() और CEIL() फंक्शन्स का उपयोग किया जा सकता है।

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

mysql> CREATE TABLE DemoTable (
    -> Value VARCHAR(20),
    -> UpdateValue INT
    -> );
Query OK, 0 rows affected (1.08 sec)
mysql> INSERT INTO DemoTable(Value) VALUES('100');
Query OK, 1 row affected (0.11 sec)
mysql> INSERT INTO DemoTable(Value) VALUES('false');
Query OK, 1 row affected (0.10 sec)
mysql> INSERT INTO DemoTable(Value) VALUES('true');
Query OK, 1 row affected (0.07 sec)
mysql> INSERT INTO DemoTable(Value) VALUES('1');
Query OK, 1 row affected (0.07 sec)

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

mysql> SELECT * FROM DemoTable;

आउटपुट:

+-------+-------------+
| Value | UpdateValue |
+-------+-------------+
| 100   | NULL        |
| false | NULL        |
| true  | NULL        |
| 1     | NULL        |
+-------+-------------+
4 rows in set (0.00 sec)

कास्ट और अपडेट क्वेरी

mysql> UPDATE DemoTable
    -> SET UpdateValue = CEIL(CAST(Value AS CHAR(7)));
Query OK, 4 rows affected (0.18 sec)
Rows matched: 4  Changed: 4  Warnings: 0

अपडेट के बाद रिकॉर्ड देखना

mysql> SELECT * FROM DemoTable;

आउटपुट:

+-------+-------------+
| Value | UpdateValue |
+-------+-------------+
| 100   | 100         |
| false | 0           |
| true  | 0           |
| 1     | 1           |
+-------+-------------+
4 rows in set (0.00 sec)

व्याख्या

  • CAST(Value AS CHAR(7)) - VARCHAR को CHAR में कास्ट करता है (MySQL में स्ट्रिंग-टू-नंबर कन्वर्जन के लिए)
  • CEIL() - सीलिंग फंक्शन: दशमलव को अगले पूर्णांक में बदलता है
  • MySQL में गैर-संख्यात्मक स्ट्रिंग ('false', 'true') को संख्या में कास्ट करने पर 0 मिलता है
  • संख्यात्मक स्ट्रिंग ('100', '1') सही ढंग से कन्वर्ट हो जाती हैं

बेहतर दृष्टिकोण: केवल संख्यात्मक मान अपडेट करें

यदि आप केवल वास्तविक संख्याओं को अपडेट करना चाहते हैं और गैर-संख्याओं को NULL/0 छोड़ना चाहते हैं:

UPDATE DemoTable
SET UpdateValue = CASE
    WHEN Value REGEXP '^[0-9]+$' THEN CAST(Value AS UNSIGNED)
    ELSE NULL
END;

यह REGEXP का उपयोग करके केवल अंकों वाली स्ट्रिंग्स की पहचान करता है।

  1. - MySQL में केवल एक कॉलम मान को कैसे अपडेट करें?

    MySQL में UPDATE स्टेटमेंट का उपयोग करके किसी विशिष्ट शर्त के आधार पर केवल एक कॉलम का मान बदला जा सकता है, जबकि अन्य कॉलम अपरिवर्तित रहते हैं। सिंटैक्स UPDATE table_name SET column_name = new_value WHERE condition; उदाहरण छात्र तालिका बनाएं: mysql> CREATE TABLE DemoTable ( -> StudentId

  1. - MySQL से कॉलम नाम और प्रकार कैसे निकालें?

    कॉलम नाम और प्रकार निकालने के लिए INFORMATION_SCHEMA.COLUMNS का उपयोग करें: select concat(column_name,=,data_type) as anyAliasName from information_schema.columns where table_schema= yourDatabaseName and table_name= yourTableName; आइए पहले एक टेबल बनाते हैं: mysql> create table DemoTable1812 (

  1. - MySQL में स्ट्रिंग में केवल पहली बार आने वाले शब्द को कैसे रिप्लेस करें?

    REGEXP_REPLACE() फ़ंक्शन केवल पहली occurrence बदलने के लिए REGEXP_REPLACE() का उपयोग करें (MySQL 8.0+)। उदाहरण स्ट्रिंग: This is my first MySQL query. This is the first tutorial. I am learning for the first time. first का पहला occurrence second से रिप्लेस करना है। टेबल और डेटा insert into demo26