欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

mysql bigint 坑

江奕云2年前13瀏覽0評論

在使用MySQL時,經常會遇到數據類型轉化的問題,其中一個比較容易出現問題的類型就是bigint

bigint是MySQL中的一種整型數據類型,其存儲范圍遠遠超過了其他整型類型(如int、tinyint等),可以存儲的最大值達到了9223372036854775807,比其他類型大約為10^9級別。因此,在需要存儲大量數據時,常常會使用bigint類型。

然而,當bigint類型與其他類型進行計算時,會出現一些坑,尤其是在PHP中使用MySQL時,需要特別注意。

//示例代碼
$num = 9223372036854775807;
$str = '9223372036854775807';
//比較
var_dump($num == $str); //bool(true)
var_dump($num === $str); //bool(false)
//加法運算
var_dump($num + $str); //float(1.844674407371E+19)
//減法運算
var_dump($num - $str); //float(0)

上述代碼中,我們定義了一個最大值的bigint類型數字和一個字符串,分別進行了比較和加減法運算。結果讓人有些意外。

首先是比較操作,由于PHP中存在類型轉換的運算,第一個比較結果為true。但是在類型嚴格比較時,結果為false。

接下來是加減法運算。雖然我們期望的結果是一個大整數,但是“1.844674407371E+19”顯然不是我們想要的結果。這是由于PHP對大整數的處理有所限制,必須在計算前將其轉化為浮點數,因此結果就產生了偏差。

因此,使用bigint類型時要注意進行類型轉換,或者使用其他方式進行計算,比如使用gmp擴展進行高精度計算。

上一篇extra mysql
下一篇mysql bibao