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

MySQL में स्ट्रिंग और पूर्णांक तुलना त्रुटि क्यों नहीं उठाती

MySQL में स्ट्रिंग और पूर्णांक की तुलना करने पर त्रुटि नहीं होती; MySQL स्ट्रिंग को स्वचालित रूप से संख्या में बदल देता है। यह अप्रत्याशित परिणाम दे सकता है।

टेबल बनाएं

mysql> CREATE TABLE DemoTable1852 (
    Value1 VARCHAR(20),
    Value2 INT
);

डेटा डालें

mysql> INSERT INTO DemoTable1852 VALUES('1John', 1);
mysql> INSERT INTO DemoTable1852 VALUES('John', 1);
mysql> INSERT INTO DemoTable1852 VALUES('1', 1);
mysql> INSERT INTO DemoTable1852 VALUES('John1', 1);

तुलना करें

mysql> SELECT Value1, Value2, Value1 = Value2 AS Result FROM DemoTable1852;

आउटपुट:

+--------+--------+--------+
| Value1 | Value2 | Result |
+--------+--------+--------+
| 1John  |      1 |      1 |
| John   |      1 |      0 |
| 1      |      1 |      1 |
| John1  |      1 |      0 |
+--------+--------+--------+
3 warnings

कैसे काम करता है

  • '1John' → अग्रणी अंक 1 पढ़ता है, बाकी अनदेखा → 1 → मेल खाता है (चेतावनी: ट्रंकेटेड)।
  • 'John' → कोई अग्रणी अंक नहीं → 0 → मेल नहीं खाता।
  • '1' → 1 → मेल खाता है।
  • 'John1' → अग्रणी अंक नहीं → 0 → मेल नहीं खाता।

चेतावनी देखें

mysql> SHOW WARNINGS;
+---------+------+----------------------------------------+
| Level   | Code | Message                                |
+---------+------+----------------------------------------+
| Warning | 1292 | Truncated incorrect INTEGER value: '1John' |
| Warning | 1292 | Truncated incorrect INTEGER value: 'John'   |
| Warning | 1292 | Truncated incorrect INTEGER value: 'John1'  |
+---------+------+----------------------------------------+

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

  • स्पष्ट कास्ट उपयोग करें: CAST(Value1 AS UNSIGNED) = Value2
  • या दोनों को स्ट्रिंग में बदलें: Value1 = CAST(Value2 AS CHAR)
  • सख्त SQL मोड सक्षम करें: SET sql_mode = 'STRICT_ALL_TABLES' (फिर त्रुटि फेंकेगा)।
  • हमेशा तुलना से पहले डेटा प्रकार मिलान सुनिश्चित करें।
  1. MySQL एरर #1046 - कोई डेटाबेस चुना नहीं गया MySQL एरर #1046 - कोई डेटाबेस चुना नहीं गया

    एरर #1046 तब आता है जब आप टेबल बनाते समय डेटाबेस सेलेक्ट करना भूल जाते हैं। समस्या ); ERROR 1046 (3D000): No database selected समाधान उपलब्ध डेटाबेस देखें: SHOW DATABASES; डेटाबेस चुनें: USE business; Database changed अब टेबल बनाएं — एरर नहीं आएगा: ); Query OK, 0 rows affected (0.50 sec) नो

  1. - MySQL में उपयोगकर्ता तभी बनाएं यदि मौजूद न हो?

    CREATE USER IF NOT EXISTS से सुरक्षित उपयोगकर्ता निर्माण MySQL 5.7.6+ में, IF NOT EXISTS क्लॉज का उपयोग करके उपयोगकर्ता केवल तभी बनाया जाता है जब वह पहले से मौजूद न हो, जिससे त्रुटि से बचा जाता है। सिंटैक्स CREATE USER IF NOT EXISTS username@host IDENTIFIED BY password; उदाहरण CREATE USER IF NOT

  1. MySQL डेटाबेस फाइलें कहां संग्रहीत करता है MySQL डेटाबेस फाइलें कहां संग्रहीत करता है

    यह जानने के लिए कि MySQL डेटाबेस फाइलें कहां संग्रहीत करता है, आप वेरिएबल @@datadir का उपयोग कर सकते हैं। क्वेरी इस प्रकार है - select @@datadir; निम्नलिखित आउटपुट पथ प्रदर्शित करता है - +---------------------------------------------+ | @@datadir | +---------------------------------------------+