在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/人工智能  數(shù)據(jù)庫  網(wǎng)絡安全/ postgresql的int4類型為什么長度可以達到10位

postgresql的int4類型為什么長度可以達到10位

兩個問題:

  1. postgresql的int4類型為什么長度可以達到10位,但是屬性中設(shè)定是32位
  2. postgresql的int4類型長度默認設(shè)定32位,為什么修改不了,修改后還是32位

附截圖:

這是表結(jié)構(gòu)中int4 的數(shù)據(jù)屬性
圖片描述

這是小白我意圖修改為11位的操作,最終還是32位,很無語
圖片描述

這是修改為10位長度的數(shù)值,保存成功
圖片描述

這是小白我意圖修改為11位長度的操作,提示超出范圍
圖片描述

回答
編輯回答
紓惘

用NaviCat連PG? 還有這種操作?

言歸正傳。看起來像是GUI工具上的一些顯示內(nèi)容讓題主產(chǎn)生了誤解,簡單解釋一下吧:

PG中int4類型對應的是SQL標準中的INTEGER類型,而且PG實現(xiàn)的是源生的integer類型,是定長4字節(jié)(=32位bit)。其對應的十進制取值范圍是 -?21474836478 ~ ?2147483647?

因此,題主截圖所示的操作錯誤如下:

  1. 第一第二張圖,題主在嘗試對一個INTGEGER類型的列修改其長度:上文已述,INTEGER定長的32位二進制,因此這樣的操作必然是徒勞的。

    不過GUI也有值得吐槽的地方,其“長度”概念似乎有二義性

  2. 第三第四張圖,題主分別嘗試向INTEGER類型的字段插入一個 INTEGER范圍內(nèi)的值和一個INTEGER范圍外的值。因此第二次嘗試是失敗的(第二次的12345678901超過了INTEGER最大值2147483647?)

    另外,從題主的描述來看,題主似乎對于二進制的位數(shù)和十進制的位數(shù)沒分清。題主一直在強調(diào)要插入一個11位十進制數(shù),可能題主看GUI里顯示INTEGER類型有"32位"就誤以為應該能夠插入。但是實際上這里的32位是二進制的位數(shù)(這也是我上文所述的GUI的槽點: 等它顯示NUMERIC類型時,長度恐怕就又要變成了十進制的長度的意思了

最后,如果題主要插入11位的十進制數(shù),可以考慮將列的類型改為BIGINT(int8)類型或直接用NUMERIC類型

2017年5月31日 03:06