1. 程式人生 > >將numeric轉換為資料型別numeric是出現算術溢位錯誤

將numeric轉換為資料型別numeric是出現算術溢位錯誤

將numeric轉換為資料型別numeric是出現算術溢位錯誤 
        相信很多朋友都遇到過這樣的問題,今天我也痛苦了好長時間.從網上得到的答案無非就是把這個標題解釋一下,以便傻到我這種程度的人都能看明白,可惜我沒看到有誰說到了點子上,希望本文能對您有點啟發.

        其實說到最根本,就是大家對sql的一些最基本的概念還不清晰,大多數這種溢位都是由這個原因造成的.為了幫助和我"傻平"程度差不多的兄弟們,我就把今天遇到的問題拿出來,和大家一起分析一下.

        我遇到溢位是給一個numeric(12,4)這個型別的列賦值(通過臨時構造的dataset而非強型別的dataset,如果是強型別就不會這麼痛苦了).為了方便描述,暫且把這個欄位叫做price.numeric(12,4)這個定義有多少人能夠準確的描述出其含義呢?正是對這個基本概念的模糊才遇到了今天的問題.其實我做的是一個excel的資料匯入,為了驗證其資料的正確性,我還特此寫了正則,避免將髒資料存到資料庫中.我的正則是這樣的 ^((([0-9]?)|[1-9][0-9]{0,11})([.][0-9]{1,4})?)$ 設斷點跟蹤一切正常,只是在update的時候會報標題那個錯誤.

        看生成的實體類,對照資料庫的欄位,挨條跟蹤資料,雖然抑鬱很久,但還是沒找到原因.逼急了,哥們我拿資料直接填到資料表裡,結果出錯了,到這個時候才明白一件事:numeric(12,4)的意思:說的通俗點就是:小數點前最多有8位,小數點後有四位,不足四位補0,超過4位小數則四捨五入.

作者:wangchao1982 
來源:CSDN 
原文:https://blog.csdn.net/wangchao1982/article/details/1882571 
版權宣告:本文為博主原創文章,轉載請附上博文連結!