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

SQL में CAST से VARCHAR को DOUBLE/DECIMAL में कैसे बदलें?

MySQL/SQL में VARCHAR (स्ट्रिंग) को संख्यात्मक टाइप (DOUBLE, DECIMAL) में बदलने के लिए CAST() फंक्शन का उपयोग करें।

सिंटैक्स

SELECT CAST(yourVarcharColumn AS DECIMAL(10,2)) AS numericColumn FROM yourTableName;

पैरामीटर

  • DECIMAL(precision, scale) - precision = कुल अंक, scale = दशमलव के बाद के अंक
  • DECIMAL(10,2) = अधिकतम 10 अंक, 2 दशमलव स्थान (उदाहरण: 99999999.99)
  • DOUBLE भी उपयोग कर सकते हैं लेकिन DECIMAL सटीक है

उदाहरण के साथ समझें

टेबल बनाएं (Amount VARCHAR में):

CREATE TABLE VarcharToDouble (
    Id INT NOT NULL AUTO_INCREMENT,
    Name VARCHAR(10),
    Amount VARCHAR(10),
    PRIMARY KEY(Id)
);

स्ट्रिंग के रूप में संख्याएं डालें:

INSERT INTO VarcharToDouble(Name, Amount) VALUES('John', '456.78');
INSERT INTO VarcharToDouble(Name, Amount) VALUES('Larry', '8465.98');
INSERT INTO VarcharToDouble(Name, Amount) VALUES('Mike', '9083.45');
INSERT INTO VarcharToDouble(Name, Amount) VALUES('Sam', '46475.50');
INSERT INTO VarcharToDouble(Name, Amount) VALUES('Carol', '10003.35');

सभी रिकॉर्ड देखें:

SELECT * FROM VarcharToDouble;

आउटपुट:

+----+-------+----------+
| Id | Name  | Amount   |
+----+-------+----------+
| 1  | John  | 456.78   |
| 2  | Larry | 8465.98  |
| 3  | Mike  | 9083.45  |
| 4  | Sam   | 46475.50 |
| 5  | Carol | 10003.35 |
+----+----------+

VARCHAR को DECIMAL में बदलें और क्रमबद्ध करें

SELECT Id, Name, CAST(Amount AS DECIMAL(10,2)) AS TotalAmount 
FROM VarcharToDouble 
ORDER BY TotalAmount DESC;

परिणाम (संख्यात्मक क्रम में):

+----+-------+------------+
| Id | Name  | TotalAmount|
+----+-------+------------+
| 5  | Carol | 10003.35   |
| 4  | Sam   | 46475.50   |
| 3  | Mike  | 9083.45    |
| 2  | Larry | 8465.98    |
| 1  | John  | 456.78     |
+----+-------+------------+

महत्वपूर्ण: स्ट्रिंग क्रम vs संख्यात्मक क्रम

स्ट्रिंग क्रम (VARCHAR)संख्यात्मक क्रम (DECIMAL)
10003.35456.78
456.788465.98
46475.509083.45
8465.9810003.35
9083.4546475.50

स्ट्रिंग क्रम में '1' '4' से छोटा है, इसलिए 10003 पहले आता है। CAST के बाद सही संख्यात्मक क्रम।

अन्य कास्टिंग विकल्प

-- CAST (मानक SQL)
CAST(Amount AS DECIMAL(10,2))
CAST(Amount AS DOUBLE)
CAST(Amount AS SIGNED)      -- पूर्णांक
CAST(Amount AS UNSIGNED)    -- अनसाइन्ड पूर्णांक

-- CONVERT (मानक SQL, अलग सिंटैक्स)
CONVERT(Amount, DECIMAL(10,2))

-- MySQL शॉर्टकट
Amount + 0                  -- स्वचालित संख्या में बदलता है
Amount * 1                  -- समान
0 + Amount                  -- समान

अमान्य डेटा हैंडलिंग

-- 'abc' को संख्या में बदलने पर 0 मिलता है (चेतावनी के साथ)
SELECT CAST('abc' AS DECIMAL(10,2));  -- 0.00

-- सुरक्षित तरीका: CASE के साथ
SELECT CASE 
           WHEN Amount REGEXP '^[0-9]+(\.[0-9]+)?$' 
           THEN CAST(Amount AS DECIMAL(10,2)) 
           ELSE NULL 
       END AS safe_amount
FROM VarcharToDouble;

नोट

  • DECIMAL सटीक अंकगणित के लिए (वित्तीय डेटा)
  • DOUBLE/FLOAT अनुमानित, वैज्ञानिक गणना के लिए
  • CAST ANSI SQL मानक, CONVERT भी मानक
  • बड़े डेटासेट पर कास्टिंग प्रदर्शन प्रभाव डाल सकती है
  1. - C++ में डबल को स्ट्रिंग में कैसे कन्वर्ट करें?

    C++ में std::to_string का उपयोग करके डबल को स्ट्रिंग में कन्वर्ट किया जा सकता है। आवश्यक पैरामीटर एक डबल मान है और एक स्ट्रिंग ऑब्जेक्ट लौटाया जाता है जिसमें डबल मान कैरेक्टर्स के अनुक्रम के रूप में होता है। C++ में इसे प्रदर्शित करने वाला एक प्रोग्राम निम्नलिखित है। उदाहरण #include <iostream>

  1. - SQL इंजेक्शन क्या है? इसे कैसे रोकें?

    SQL इंजेक्शन एक वेब हैकिंग तकनीक है। यह कोड इंजेक्शन तकनीक है जो आपके डेटाबेस में दुर्भावनापूर्ण कोड डालती है और डेटाबेस को नष्ट कर देती है। यह वेब पेज इनपुट के माध्यम से दुर्भावनापूर्ण कोड का सम्मिलन है। SQL इंजेक्शन का मुख्य कारण SQL क्वेरी में डेटा को चतुराई से प्रदान करना है जो हमारे डेटाबेस के

  1. डाउनटाइम के बिना Redis SQL क्वेरीज़ को सहजता से निष्पादित करें डाउनटाइम के बिना Redis SQL क्वेरीज़ को सहजता से निष्पादित करें

    Redis SQL क्वेरी चलाना मुश्किल नहीं होना चाहिए। मैंने वास्तव में कुछ साल पहले यह बात उठाई थी जब एक दोस्त से बात कर रहा था जो एक रिटेल कंपनी में डेटा वेयरहाउसिंग समाधान प्रबंधित करता है। हमने Redis की क्वेरीज़ के बारे में बात करना शुरू किया जब उसने एक समस्या बताई जिसका वह सामना कर रहा था। हमारे डेटा