MySQL 插入數據提示字段超出范圍?一招解決 DECIMAL 類型踩坑

MySQL 插入數據提示字段超出范圍?一招解決 DECIMAL 類型踩坑

在日常數據庫操作中,我們經常會遇到各種字段類型相關的問題。今天就來聊聊一個常見的錯誤:插入數據時提示字段值超出范圍,以實際案例帶你搞懂 MySQL 中 DECIMAL 類型的使用要點。

問題場景再現

先看一下我創建表和插入數據的操作:

-- 創建商品表
CREATE TABLE mini_product (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(20) NOT NULL,price DECIMAL(6,2)
) ENGINE=InnoDB;-- 插入商品數據
INSERT INTO mini_product (name, price) VALUES
('iPhone', 6999.00),
('小米電視', 3299.00),
('華為耳機', 899.00),
('聯想筆記本', 5699.00),
('大疆無人機', 7999.00),
('Kindle', 998.00),
('Switch', 2099.00),
('索尼相機', 12999.00),  -- 此行報錯
('機械鍵盤', 599.00),
('移動硬盤', 699.00);

執行后,數據庫直接拋出錯誤:

ERROR 1264 (22003): Out of range value for column ‘price’ at row 8

錯誤原因分析

這個錯誤的根源在于price字段的類型定義 ——DECIMAL(6,2)。

DECIMAL 類型的格式是DECIMAL(M,D),其中:

  • M表示總位數(整數部分 + 小數部分),范圍 1-65

  • D表示小數部分的位數,范圍 0-30,且D ≤ M

對于DECIMAL(6,2)來說:

  • 總位數是 6 位

  • 小數部分固定占 2 位

  • 因此整數部分最多只能有 4 位(6-2=4)

  • 最大可存儲的值為 9999.99

而第 8 行數據中,“索尼相機” 的價格是 12999.00,整數部分有 5 位(12999),明顯超過了DECIMAL(6,2)能容納的最大整數位數(4 位),所以導致了超出范圍的錯誤。

解決辦法

只需要調整price字段的精度,使其能夠容納更大的數值。

根據我們的數據,最大價格是 12999.00,整數部分有 5 位,小數部分 2 位,所以總位數至少需要 7 位(5+2=7)。

執行以下 SQL 語句修改表結構:

ALTER TABLE mini_product MODIFY COLUMN price DECIMAL(7,2);

修改后,DECIMAL(7,2)表示:

  • 總位數 7 位

  • 小數部分 2 位

  • 整數部分最多 5 位

  • 最大可存儲的值為 99999.99,足以容納 12999.00

此時再重新執行插入語句,就能成功插入所有數據了。

擴展知識:DECIMAL 類型使用建議

  1. 根據實際業務數據范圍選擇合適的精度,既不要過大(浪費存儲空間),也不要過小(無法存儲有效數據)

  2. 對于價格、金額等精確數值,優先使用 DECIMAL 類型,避免使用 FLOAT/DOUBLE(可能存在精度丟失問題)

  3. 設計表結構時,預估可能的最大數值,給字段預留一定的擴展空間

  4. 常見場景參考:

    • 小額商品價格:DECIMAL (6,2)(最大 9999.99)
    • 中額商品價格:DECIMAL (8,2)(最大 999999.99)
    • 大額交易金額:DECIMAL (10,2)(最大 99999999.99)

掌握 DECIMAL 類型的使用要點,能幫你避免很多數據存儲相關的問題,讓數據庫設計更合理、更健壯。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/93289.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/93289.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/93289.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

一周學會Matplotlib3 Python 數據可視化-繪制誤差條形圖

鋒哥原創的Matplotlib3 Python數據可視化視頻教程: 2026版 Matplotlib3 Python 數據可視化 視頻教程(無廢話版) 玩命更新中~_嗶哩嗶哩_bilibili 課程介紹 本課程講解利用python進行數據可視化 科研繪圖-Matplotlib,學習Matplotlib圖形參數基本設置&…

JVM垃圾回收器

垃圾回收算法標記-復制缺點:內存利用率低,有一塊區域無法使用。標記-清除缺點:1. 效率問題 (如果需要標記的對象太多,效率不高)2. 空間問題(標記清除后會產生大量不連續的碎片)標記-整理分代收集根據對象存…

科研工具的一些注意事項

Origin Origin導入數據之后,可以考慮 [刪除數據連接器…] 導入數據之后,刪除數據連接,這樣當原來的文件移動之后,就不影響origin文件里面的數據。不然就會出現空白數據:當然,沒有數據了也可以加載出來&…

美國服務器環境下Windows容器工作負載智能彈性伸縮

在北美數據中心加速數字化轉型的今天,企業客戶日益重視Windows容器工作負載的智能化管理。本文將深入探討基于Azure Stack HCI(混合云基礎設施)的彈性伸縮方案如何突破傳統資源調度瓶頸,通過分析指標收集、策略配置、混合云聯動三…

歐姆龍CP系列以太網通訊實現上位機與觸摸屏監控

一、行業痛點在現代工業生產中,自動化生產線的控制系統的高效性與智能化程度對生產效率和產品質量有著至關重要的影響。然而,許多傳統工業生產線中使用的歐姆龍CP系列系列PLC以太網模塊,由于自身設計原因,并未配備以太網接口&…

【大語言模型 00】導讀

【大語言模型00】導讀:你的LLM全棧工程師進階之路關鍵詞:大語言模型、LLM、Transformer、深度學習、AI工程化、全棧開發、技術路線圖摘要:這是一份完整的大語言模型學習指南,涵蓋從數學基礎到商業落地的200篇深度文章。無論你是AI…

Business Magic

題目描述There are n stores located along a street, numbered from 1 to n from nearest to farthest. Last month, the storek had a net profit of rk . If rk is positive, it represents a profit of rk dollars; if rk is negative, it represents a loss of ?rk dolla…

在ubuntu系統上離線安裝jenkins的做法

作者:朱金燦 來源:clever101的專欄 1.安裝java環境和下載war包: Jenkins 依賴于 Java 環境(OpenJDK 11 或更高版本): # 安裝OpenJDK 11和字體依賴 sudo dpkg -i openjdk-11-jre-headless_*.deb fontconfi…

圖像相似度算法匯總及Python實現

下面整理了一些圖像相似度算法,可根據不同的需求選擇不同的算法,對每種算法進行了簡單描述并給出Python實現: 1. 基于像素的算法: (1).MSE(Mean Squared Error):均方誤差,通過計算兩幅圖像對應像素值差的平…

IO流與單例模式

單例模式 單例模式是指一個類只能有一個對象。 餓漢模式 在單例模式下,在程序開始(main函數運行前)的時候創建一個對象,這之后就不能再創建這個對象。 class HungryMan { public:static HungryMan* getinstance(){return &ins…

Java設計模式之依賴倒置原則使用舉例說明

示例1:司機駕駛汽車 問題場景:司機類直接依賴奔馳車類,新增寶馬車需修改司機類代碼。 // 未遵循DIP class Benz { public void run() { /*...*/ } } class Driver { public void drive(Benz benz) { benz.run(); } } // 遵循DIP:…

【Docker】openEuler 使用docker-compose部署gitlab-ce

docker-compose配置 services:gitlab:image: gitlab/gitlab-ce:latestcontainer_name: gitlabrestart: alwayshostname: gitlab.example.comenvironment:GITLAB_OMNIBUS_CONFIG: |# Add any other gitlab.rb configuration here, each on its own lineexternal_url https://gi…

ElasticSearch 父子文檔使用簡記

一. ES parent-child 文檔簡介 ES 提供了類似數據庫中 Join 聯結的實現,可以通過 Join 類型的字段維護父子關系的數據,其父文檔和子文檔可以單獨維護。 二. 父子文檔的索引創建與數據插入 ES 父子文檔的創建可以分為下面三步: 創建索引 M…

【Linux】編輯器vim的使用

目錄 1. vim的基本概念 2. vim的基本使用 3. vim命令模式操作 3.1 移動光標 3.2 刪除 3.3 復制 3.4 替換 3.5 撤銷 3.6 更改 3.7 跳轉 4. vim底行模式操作 4.1 列出行號 4.2 跳到文件中的某行 4.3 查找字符 4.4 保存文件 4.5 離開vim 1. vim的基本概念 Vim&…

《零基礎掌握飛算Java AI:核心概念與案例解析》

前引:飛算科技是一家專注于企業級智能化技術服務的公司,核心領域包括AI、大數據、云計算等。其Java AI解決方案主要面向企業級應用開發,提供從數據處理到模型部署的全流程支持!飛算Java AI是一款基于人工智能技術的Java開發輔助工…

Chrome騰訊翻譯插件transmart的安裝

文章目錄一、官網地址二、安裝過程1. 下載插件2. 解壓crx3, chrome安裝三、如何使用一、官網地址 騰訊翻譯插件官網 二、安裝過程 1. 下載插件 點擊上面的官網地址,下拉到如圖所示chrome插件位置,點擊立即下載 2. 解壓crx 從壓縮文件中解壓出crx文…

IOMMU的2級地址翻譯機制及多級(2~5)頁表查找

IOMMU的2級地址翻譯機制及多級(2~5)頁表查找 摘要:IOMMU是現代計算機系統中用于I/O設備(如GPU、NIC、網絡接口卡)的地址翻譯和保護機制,類似于CPU的MMU(Memory Management Unit),但專為設備DMA(Direct Memory Access,直接內存訪問)設計。它支持虛擬化環境(…

C++STL標準模板庫詳解

一、引言STL(Standard Template Library)是 C 標準庫的核心組成部分,其中容器(Containers) 作為數據存儲的基礎組件,為開發者提供了豐富的數據結構選擇。本文將聚焦 STL 容器的核心類型,結合具體…

神經網絡 常見分類

📚 神經網絡的常見分類方式可以從不同角度來劃分,以下是幾種主流思路,幫你快速梳理清晰:1?? 按網絡結構分類前饋神經網絡(Feedforward Neural Network, FNN) 數據從輸入層→隱藏層→輸出層單向傳遞&#…

生產環境Redis緩存穿透與雪崩防護性能優化實戰指南

生產環境Redis緩存穿透與雪崩防護性能優化實戰指南 在當下高并發場景下,Redis 作為主流緩存組件,能夠極大地提升讀寫性能,但同時也容易引發緩存穿透、緩存擊穿及緩存雪崩等問題,導致后端依賴數據庫的請求激增,系統穩定…