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

MySQL में intvalue='1' और intvalue=1 में अंतर

उत्तर

intvalue = 1 उपयोग करें। स्टेटमेंट intvalue = '1' आंतरिक रूप से MySQL द्वारा CAST('1' AS INT) में कन्वर्ट हो जाता है।

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

mysql> CREATE TABLE DemoTable1566 (
    -> intvalue INT
    -> );
Query OK, 0 rows affected (0.64 sec)
mysql> INSERT INTO DemoTable1566 VALUES(1);
Query OK, 1 row affected (0.15 sec)
mysql> INSERT INTO DemoTable1566 VALUES(55);
Query OK, 1 row affected (0.08 sec)
mysql> INSERT INTO DemoTable1566 VALUES(75);
Query OK, 1 row affected (0.32 sec)
mysql> INSERT INTO DemoTable1566 VALUES(90);
Query OK, 1 row affected (0.19 sec)

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

mysql> SELECT * FROM DemoTable1566;

आउटपुट:

+----------+
| intvalue |
+----------+
| 1        |
| 55       |
| 75       |
| 90       |
+----------+
4 rows in set (0.00 sec)

intvalue = 1 क्वेरी

mysql> SELECT * FROM DemoTable1566 WHERE intvalue = 1;

आउटपुट:

+----------+
| intvalue |
+----------+
| 1        |
+----------+
1 row in set (0.00 sec)

intvalue = '1' क्वेरी

mysql> SELECT * FROM DemoTable1566 WHERE intvalue = '1';

आउटपुट:

+----------+
| intvalue |
+----------+
| 1        +
+----------+
1 row in set (0.00 sec)

व्याख्या

  • दोनों क्वेरीज समान परिणाम देती हैं क्योंकि MySQL स्वचालित प्रकार रूपांतरण (implicit type conversion) करता है
  • intvalue = '1' → MySQL आंतरिक रूप से CAST('1' AS SIGNED) करता है
  • परिणाम समान होता है, लेकिन intvalue = 1 अधिक कुशल और स्पष्ट है

प्रदर्शन अंतर

  • संख्यात्मक तुलना (intvalue = 1): इंडेक्स उपयोग कर सकता है, तेज
  • स्ट्रिंग तुलना (intvalue = '1'): प्रत्येक पंक्ति के लिए प्रकार रूपांतरण, इंडेक्स उपयोग नहीं कर सकता (कुछ मामलों में)

सर्वोत्तम अभ्यास

  • संख्यात्मक कॉलम के लिए संख्यात्मक लिटरल उपयोग करें: WHERE id = 123
  • स्ट्रिंग कॉलम के लिए स्ट्रिंग लिटरल उपयोग करें: WHERE name = 'John'
  • तिथि कॉलम के लिए तिथि लिटरल: WHERE dt = '2023-01-01'
  • एप्लिकेशन कोड में: पैरामीटर बाइंडिंग उपयोग करें (प्रकार सुरक्षा स्वचालित)

जब स्ट्रिंग तुलना समस्या बनती है

-- VARCHAR कॉलम पर
WHERE varchar_col = 123  -- पूर्ण टेबल स्कैन (प्रकार बेमेल)
WHERE varchar_col = '123' -- इंडेक्स उपयोग कर सकता है

सही प्रकार का लिटरल उपयोग करना प्रदर्शन और शुद्धता दोनों के लिए महत्वपूर्ण है।

  1. - MySQL और SQL Server के बीच अंतर

    MySQL बनाम SQL Server: विस्तृत तुलना दोनों MySQL और SQL Server लोकप्रिय RDBMS (रिलेशनल डेटाबेस मैनेजमेंट सिस्टम) हैं, लेकिन उनके स्वामित्व, लाइसेंसिंग, वास्तुकला और सुविधाओं में महत्वपूर्ण अंतर हैं। तुलना तालिका क्र.सं. पहलू MySQL SQL Server 1 स्वामित्व/विकास Oracle के स्वामित्व में (मूलतः M

  1. - MySQL में != NULL और IS NOT NULL का अंतर

    NULL तुलना: != NULL बनाम IS NOT NULL MySQL में किसी मान की तुलना !=NULL से करने पर परिणाम NULL होता है, इसलिए !=NULL अर्थहीन है। सही तरीका IS NOT NULL है। टेबल बनाएं और डेटा डालें: mysql> create table DemoTable1970 ( Value int ); Query OK, 0 rows affected (0.00 sec) mysql> insert into DemoTabl

  1. - MySQL और PostgreSQL के बीच अंतर

    MySQL और PostgreSQL: विस्तृत तुलना MySQL और PostgreSQL दो सबसे लोकप्रिय ओपन-सोर्स रिलेशनल डेटाबेस मैनेजमेंट सिस्टम (RDBMS) हैं। जबकि दोनों SQL मानकों का समर्थन करते हैं और कई समान विशेषताएं साझा करते हैं, उनकी आर्किटेक्चर, क्षमताओं और आदर्श उपयोग मामलों में महत्वपूर्ण अंतर हैं। MySQL अवलोकन प्रकार