Ein Kollege fragte mich, was N und M im MySQL-Datentyp DECIMAL(N,M) bedeuten. Natürlich ist M die Anzahl der Dezimalstellen nach dem Komma, aber ist dieses N die maximale Anzahl von Ziffern vor dem Komma oder die maximale Anzahl von Ziffern nach dem Hinzufügen des Dezimalteils? Ich kann mich wirklich nicht daran erinnern. Also habe ich zur Überprüfung eine Testtabelle erstellt und die Ergebnisse sind wie folgt: Testtabelle, Feld „seller_cost“ ist definiert als decimal(14,2) TABELLE `test_decimal` erstellen ( `id` int(11) NICHT NULL, `Verkäuferkosten` Dezimalzahl (14,2) STANDARD NULL ) ENGINE=InnoDB STANDARD-CHARSET=utf8 Zunächst ist die Tabelle leer. mysql> wähle * aus test_decimal; Leerer Satz (0,00 Sek.) Das Einfügen einer Zahl mit einer ganzzahligen Teillänge von 14 führt zu einem Fehler, dass der Spaltenbereich überschritten wird. mysql> einfügen in test_decimal(id,seller_cost) Werte(1,12345678901234); FEHLER 1264 (22003): Wert für Spalte „seller_cost“ in Zeile 1 liegt außerhalb des gültigen Bereichs Das Einfügen einer Zahl mit einer ganzzahligen Teillänge von 12 kann korrekt eingefügt werden mysql> einfügen in test_decimal(id,seller_cost) Werte(1,123456789012); Abfrage OK, 1 Zeile betroffen (0,00 Sek.) Abfrage der Tabelle und Feststellung, dass MySQL am Ende des eingefügten Integer-Wertes zwei Dezimalstellen ".00" hinzufügt mysql> wähle * aus test_decimal; +----+-----------------+ | ID | Verkäuferkosten | +----+-----------------+ | 1 | 123456789012,00 | +----+-----------------+ 1 Zeile im Satz (0,00 Sek.) Fügen Sie weiterhin Zahlen mit 12 Ziffern für den ganzzahligen Teil und 5 Ziffern für den Dezimalteil ein. Die Zahl kann erfolgreich eingefügt werden, es wird jedoch eine Warnung angezeigt. Die Warnung weist darauf hin, dass der Dezimalteil auf zwei Dezimalstellen gekürzt wurde. mysql> einfügen in test_decimal(id,seller_cost) Werte(1,123456789012.12345); Abfrage OK, 1 Zeile betroffen, 1 Warnung (0,00 Sek.) mysql> Warnungen anzeigen; +-------+------+--------------------------------------------------+ | Ebene | Code | Nachricht | +-------+------+--------------------------------------------------+ | Hinweis | 1265 | Daten für Spalte „seller_cost“ in Zeile 1 abgeschnitten | +-------+------+--------------------------------------------------+ 1 Zeile im Satz (0,00 Sek.) mysql> wähle * aus test_decimal; +----+-----------------+ | ID | Verkäuferkosten | +----+-----------------+ | 1 | 123456789012,00 | | 1 | 123456789012.12 | +----+-----------------+ 2 Zeilen im Satz (0,00 Sek.) Die Länge des ganzzahligen Teils wird auf 2 reduziert und die Länge des Dezimalteils bleibt 5. Das Einfügen kann erfolgreich sein, aber der Dezimalteil wird auf zwei Ziffern gekürzt. mysql> einfügen in test_decimal(id,seller_cost) Werte(1,12.12345); Abfrage OK, 1 Zeile betroffen, 1 Warnung (0,00 Sek.) mysql> Warnungen anzeigen; +-------+------+--------------------------------------------------+ | Ebene | Code | Nachricht | +-------+------+--------------------------------------------------+ | Hinweis | 1265 | Daten für Spalte „seller_cost“ in Zeile 1 abgeschnitten | +-------+------+--------------------------------------------------+ 1 Zeile im Satz (0,00 Sek.) mysql> wähle * aus test_decimal; +----+-----------------+ | ID | Verkäuferkosten | +----+-----------------+ | 1 | 123456789012,00 | | 1 | 123456789012.12 | | 1 | 12.12 | +----+-----------------+ 3 Zeilen im Satz (0,00 Sek.) Geben Sie weiterhin eine Zahl ein, deren Dezimalteil weniger als zwei Ziffern beträgt. Diese kann korrekt eingefügt werden und der Dezimalteil wird automatisch auf zwei Ziffern gerundet. mysql> einfügen in test_decimal(id,seller_cost) Werte(1,12.1); Abfrage OK, 1 Zeile betroffen (0,00 Sek.) mysql> wähle * aus test_decimal; +----+-----------------+ | ID | Verkäuferkosten | +----+-----------------+ | 1 | 123456789012,00 | | 1 | 123456789012.12 | | 1 | 12.12 | | 1 | 12.10 | +----+-----------------+ 4 Zeilen im Satz (0,00 Sek.) Zusammenfassend ist der M-Wert in DECIMAL(N,M) die Anzahl der Dezimalstellen. Wenn der eingefügte Wert den Dezimalteil nicht angibt oder der Dezimalteil weniger als M Ziffern hat, wird er automatisch auf M Dezimalstellen aufgefüllt. Wenn der Dezimalteil des eingefügten Werts M überschreitet, wird er abgeschnitten und die ersten M Dezimalstellen werden abgeschnitten. N ist die Gesamtlänge des ganzzahligen Teils und des Dezimalteils, d. h. der ganzzahlige Teil der eingefügten Zahl darf nicht mehr als NM Ziffern haben, da er sonst nicht erfolgreich eingefügt werden kann und ein Fehler „außerhalb des Bereichs“ gemeldet wird. Zusammenfassen Dies ist der gesamte Inhalt dieses Artikels zur detaillierten Erklärung der Bedeutung von N und M im MySQL-Datentyp DECIMAL(N,M). Ich hoffe, er wird für alle hilfreich sein. Interessierte Freunde können weiterhin auf diese Site verweisen: Beispiele für die Verwendung von oder Anweisungen in MySQL, eine kurze Beschreibung der Unterschiede zwischen Redis und MySQL usw. Wenn Sie Fragen haben, können Sie jederzeit eine Nachricht hinterlassen und der Herausgeber wird Ihnen rechtzeitig antworten. Vielen Dank, Freunde, für die Unterstützung dieser Site! Das könnte Sie auch interessieren:
|
<<: Installation von VMware Workstation unter Linux (Ubuntu)
>>: WeChat-Applet implementiert Formularüberprüfung
Inhaltsverzeichnis 1. Schreiben Sie Webshell in d...
Kommen wir ohne weitere Umschweife direkt zum Cod...
Vorwort In diesem Artikel untersuchen wir die Ent...
Mithilfe von Nginx-Protokollen lassen sich Benutz...
Vorwort Wenn wir Abfrageanweisungen verwenden, mü...
Inhaltsverzeichnis Hintergrund analysieren Verfah...
Vorwort In der Springboot-Konfigurationsdatei hab...
1. Entpacken Sie die Datei in das aktuelle Verzei...
Gewünschte Wirkung: Nach dem Klick auf die Übermi...
1. Wer ist Tomcat? 2. Was kann Tomcat? Tomcat ist...
Fügen Sie dem el-form-Formular Regeln hinzu: Defi...
Inhaltsverzeichnis 1. Einleitung 2. Direkte Wiede...
Inhaltsverzeichnis 1. Angelegenheiten: Vier Haupt...
Ich werde drei Tage benötigen, um den statischen ...
Inhaltsverzeichnis Vorwort Mehrere gängige Bitope...