MySQL 將字符串類型的小數轉換為保留位數的小數類型
問題背景
在實際開發中,可能數據在流轉或者傳遞環節中,需要對數值類型做轉換(比如:將varchar類型的"3.14",轉為浮點類型的3.14)
如何使用SQL語句實現此種場景的數據轉換呢?
解決方案
數據轉換可以用到MySQL自帶的函數 cast()或者convert(),浮點類型可以使用decimal()函數。
示例如下:
1)不保留小數的情況
select cast("3.14159" as decimal); # 運行結果:3 select convert("3.14159", decimal); # 運行結果:3
2)保留小數的情況
select cast("3.14159" as decimal(10, 2)); # 運行結果:3.14 select convert("3.14159", decimal(10, 2)); # 運行結果:3.14 select cast("3.14159" as decimal(10, 3)); # 運行結果:3.142 select convert("3.14159", decimal(10, 3)); # 運行結果:3.142 select cast("3.14159" as decimal(10, 4)); # 運行結果:3.1416 select convert("3.14159", decimal(10, 4)); # 運行結果:3.1416 select cast("3.14159" as decimal(10, 5)); # 運行結果:3.14159 select convert("3.14159", decimal(10, 5)); # 運行結果:3.14159
補充說明
demical(M,D)函數采取四舍五入的方式,保留小數位數。
M:浮點型數值的總位數;
D:浮點型數值的小數保留位數。
