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

MySQL में CAST(... AS SIGNED) से संख्यात्मक स्ट्रिंग की तुलना करें

VARCHAR कॉलम में संग्रहीत संख्याओं की संख्यात्मक तुलना

जब संख्याएं VARCHAR में स्टोर होती हैं, तो स्ट्रिंग तुलना ('9' > '100') गलत परिणाम देती है। CAST(value AS SIGNED) या CAST(value AS UNSIGNED) से संख्यात्मक तुलना करें।

टेबल और डेटा

CREATE TABLE compareTwoStringsDemo (
    Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    Value VARCHAR(100)
);

INSERT INTO compareTwoStringsDemo (Value) VALUES
('1235667'), ('999999'), ('999888'), ('567433'), ('2345123');

स्ट्रिंग तुलना (गलत)

SELECT * FROM compareTwoStringsDemo WHERE Value = '999999';

यह काम करता है क्योंकि सटीक मिलान है, लेकिन WHERE Value > '100000' गलत देगा (स्ट्रिंग तुलना में '9' > '1')।

संख्यात्मक तुलना (सही)

SELECT * FROM compareTwoStringsDemo
WHERE CAST(Value AS SIGNED) = 999999;

आउटपुट

+----+--------+
| Id | Value  |
+----+--------+
| 2  | 999999 |
+----+--------+

रेंज क्वेरी उदाहरण

SELECT * FROM compareTwoStringsDemo
WHERE CAST(Value AS SIGNED) BETWEEN 500000 AND 1000000;

प्रदर्शन विचार

  • CAST कॉलम पर इंडेक्स उपयोग को रोकता है (सार्गेबल नहीं)।
  • बड़े टेबल पर: Value कॉलम को BIGINT या INT में बदलें, या जनरेटेड कॉलम num_val BIGINT GENERATED ALWAYS AS (CAST(Value AS SIGNED)) STORED बनाकर उस पर इंडेक्स करें।
  • SIGNED = साइन्ड इंटीजर, UNSIGNED = अनसाइन्ड (केवल धनात्मक)।

MySQL 8.0+ शॉर्टकास्ट

WHERE Value + 0 = 999999  -- अंतर्निहित कास्ट
  1. - MySQL क्वेरी: कॉलम मानों से किन्हीं दो स्ट्रिंग से मिलान करना

    इसके लिए, आप LIKE ऑपरेटर के साथ OR शर्त का उपयोग कर सकते हैं। पहले एक टेबल बनाते हैं: mysql> create table DemoTable762 (Title text); Query OK, 0 rows affected (0.54 sec) इन्सर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें: mysql> insert into DemoTable762 values(Introduction to Java); Query

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

    MySQL में एक ही UPDATE स्टेटमेंट में एकाधिक कॉलम अपडेट करने के लिए, SET क्लॉज़ में कॉलम को कॉमा से अलग करके सूचीबद्ध करें। यह एटॉमिक ऑपरेशन सुनिश्चित करता है और क्वेरी ओवरहेड कम करता है। उदाहरण: FirstName और LastName एक साथ अपडेट करना डेमो टेबल बनाएं: mysql> CREATE TABLE DemoTable1909 ( Id

  1. - C++ में दो स्ट्रिंग्स की तुलना

    यहां हम देखेंगे कि C++ में दो स्ट्रिंग्स की तुलना कैसे करें। C++ में स्ट्रिंग क्लास है। इसमें मानक लाइब्रेरी में स्ट्रिंग्स की तुलना के लिए compare() फ़ंक्शन भी है। यह फ़ंक्शन स्ट्रिंग वर्णों को एक-एक करके जांचता है, यदि कुछ बेमेल हैं, तो यह शून्येतर मान वापस करता है। बेहतर आइडिया पाने के लिए कोड दे