實數型別,即支援儲存帶小數的資料型別。mysql資料庫中的實數型別,既有支援精確型別的,也有支援不精確型別的,所以,在使用的過程中需要注意一些注意事項。
1.float和double型別使用標準的浮點運算進行近似計算,這裡注意是近似計算,所以在一些計算結果中可能會因為精度損失而導致一些意想不到的結果。
2.decimal型別用於儲存精確的小數,需要注意的是在mysql5.0以及更高的版本中才支援精確計算,因為在4.1及更早的版本中,decimal只是乙個儲存型別,底層是使用浮點運算來實現計算的。
3.在mysql5.0及更高的版本中,decimal型別允許儲存最多65個數字。
4.在儲存相同範圍的值時,float和double比decimal使用更少的儲存空間,float使用4個位元組儲存,double使用8個位元組儲存。
5.因為decimal需要額外的空間和計算開銷,應盡量在只對小數進行精確計算的時候才使用decimal。在有金額交易的實戰過程中,更傾向於使用bigint代替decimal,將金額單位擴大相應倍數,如金額單位為元,而在儲存的時候擴大100倍,使用分為單位,這樣可以避免使用浮點數計算不精確的問題和使用decimal計算代價高的問題。
MySQL型別轉換注意事項
最近在做的一項工作是將之前使用mssqlserver資料庫的服務,改寫為支援mysql資料庫,sql語句中涉及了一些型別轉換的功能,結果發現mysql的型別轉換函式 convert 並沒有提供很好的資料型別名稱的相容性,引數順序上也不一樣!sqlserver中使用convert int,port m...
MySQL型別轉換注意事項
最近在做的一項工作是將之前使用mssqlserver資料庫的服務,改寫為支援mysql資料庫,sql語句中涉及了一些型別轉換的功能,結果發現mysql的型別轉換函式 convert 並沒有提供很好的資料型別名稱的相容性,引數順序上也不一樣!sqlserver中使用convert int,port m...
mysql使用distinct注意事項
1.mysql使用distinct的使用 一定要位於 查詢的最前端 例項 select distinct sla code,id,sla type,sla place,sla rank 如果放在後面則報錯如 2.select t d,sla type,sla place,sla rank disti...