MySQL में DECIMAL कॉलम में FLOAT डालने पर चेतावनी देखना
जब आप DECIMAL कॉलम में फ्लोट मान डालते हैं जो फिट नहीं होता, तो MySQL चेतावनी देता है। SHOW WARNINGS से इसे देख सकते हैं।
उदाहरण
अस्थायी टेबल बनाएं:
mysql> create temporary table WarningDemo (
-> Value DECIMAL
-> );
फ्लोट मान डालें (DECIMAL डिफ़ॉल्ट स्केल 0 है):
mysql> insert into WarningDemo values(9.80); Query OK, 1 row affected, 1 warning (0.03 sec)
चेतावनी देखें:
mysql> show warnings;
परिणाम:
+-------+------+--------------------------------------------+ | Level | Code | Message | +-------+------+--------------------------------------------+ | Note | 1265 | Data truncated for column 'Value' at row 1 | +-------+------+--------------------------------------------+
संग्रहीत मान:
mysql> select * from WarningDemo;
+-------+ | Value | +-------+ | 10 | -- 9.80 को 10 में काट दिया गया +-------+
व्याख्या
DECIMALबिना परिशुद्धता/स्केल केDECIMAL(10,0)के बराबर है (कोई दशमलव नहीं)- 9.80 को 10 में काट दिया जाता है (ट्रंकेट, राउंड नहीं)
- चेतावनी कोड 1265: Data truncated
सही तरीका: परिशुद्धता और स्केल निर्दिष्ट करें
CREATE TABLE t (Value DECIMAL(5,2)); -- 999.99 तक INSERT INTO t VALUES (9.80); -- कोई चेतावनी नहीं, 9.80 संग्रहीत
चेतावनी के प्रकार
| Level | अर्थ |
|---|---|
| Note | सूचनात्मक (ट्रंकेशन आदि) |
| Warning | संभावित समस्या (डेटा हानि संभव) |
| Error | त्रुटि (स्टेटमेंट विफल) |