0
我得到一個varchar字段說的值爲174,但是當我cast(field as decimal(3,1))
它給我總是99.9?我如何投射或將其轉換爲17.4?或者我必須在源代碼級更改要以十進制輸入的輸入嗎?Mysql投到十進制給99.9
我得到一個varchar字段說的值爲174,但是當我cast(field as decimal(3,1))
它給我總是99.9?我如何投射或將其轉換爲17.4?或者我必須在源代碼級更改要以十進制輸入的輸入嗎?Mysql投到十進制給99.9
這是因爲174
不能用小數點前2位和小數點後1位表示。 decimal(3,1)
小數點後的意思是「總共3位和1(3)
mysql> select cast('174' as decimal(3,1));
+-----------------------------+
| cast('174' as decimal(3,1)) |
+-----------------------------+
| 99.9 |
+-----------------------------+
1 row in set, 1 warning (0.00 sec)
它給出了可以與示出的警告:
mysql> show warnings;
+---------+------+----------------------------------------------------------------------+
| Level | Code | Message |
+---------+------+----------------------------------------------------------------------+
| Warning | 1264 | Out of range value for column 'cast('174' as decimal(3,1))' at row 1 |
+---------+------+----------------------------------------------------------------------+
1 row in set (0.00 sec)
除以10,並嘗試數目再次:
mysql> select cast('174'/10 as decimal(3,1));
+--------------------------------+
| cast('174'/10 as decimal(3,1)) |
+--------------------------------+
| 17.4 |
+--------------------------------+
1 row in set (0.00 sec)
所以,如果我有我的領域爲整我可以做同樣的分我10再投是正確 – user5313398
是的'「174」/10'隱式注塑VARCHAR到一個int – PerlDuck
?。沒有我的意思,如果該字段是整數例如那麼除以10就是相同的答案吧? – user5313398