iT邦幫忙

0

將16位以上數字寫入MS SQL的nvarchar欄位無法完整儲存

  • 分享至 

  • xImage

各位先進好:

我在MSSQL當中有一欄位格式為nvarchar(16)
資料是從Excel檔的欄位存入,該欄為通用,值如下
3324154255849900
存入SQL會變成
3.3241542558499E
不知道是什麼原因?如何改善?
感謝。

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

4
Darwin Watterson
iT邦好手 1 級 ‧ 2019-06-05 13:34:15
最佳解答

原因就是 :
Excel 的型態為數值超出整數範圍 -2147483648 ~ 2147483647
先改以浮點數儲存成科學記號的浮點數數值 3.3241542558499E15
再轉成nvarchar(16)
不過因為長度超過16, E後面的指數被砍掉了/images/emoticon/emoticon02.gif
結果就是你所看到的 3.3241542558499E /images/emoticon/emoticon39.gif

改善方式 :
儲存格型態改成 flaot 或者 bigint
如果堅持nvarchar, 先增加nvarchar長度取得完整的浮點數資料後
依你的例子來說:寫段程式將 3.3241542558499 x 1000000000000000後
再存進nvarvhar !
/images/emoticon/emoticon34.gif

verdipeng iT邦新手 5 級 ‧ 2019-06-05 16:32:58 檢舉

感謝您的回覆,長知識了,謝謝!

0

darwin0616已經跟你說的很明白了。

我就大略說一下數值位數。

其實最基本的位數計算,最簡易的計算是需要將設定位數至少要再扣一個位數。
這個位數其實就是+-號的值。

所以16位數的欄位,實際上只能容許15位數。

我要發表回答

立即登入回答