如果您的分數列包含以varchar存儲的數據,則可以使用CAST
函數將這些數據轉換爲十進制數。例如:
mysql> select cast('3.35643294332' as decimal(10,3));
+----------------------------------------+
| cast('3.35643294332' as decimal(10,3)) |
+----------------------------------------+
| 3.356 |
+----------------------------------------+
1 row in set (0,01 sec)
並注意這將正確地舍入值:
mysql> select cast('3.35663294332' as decimal(10,3));
+----------------------------------------+
| cast('3.35663294332' as decimal(10,3)) |
+----------------------------------------+
| 3.357 |
+----------------------------------------+
1 row in set (0,00 sec)
即:
'3.3564'
澆注到3.356
- 和
'3.3566'
澆注到3.357
現在,你只需要使用cast
功能在您的比較在你where
條款。
我想這樣的事情應該工作,例如:
select *
from your_table
where cast(Score as decimal(10,3)) = cast('3.4564' as decimal(10,3))
即,你都轉換「輸入」和分數與小數3小數;並轉換這些值。
一個旁註:這樣做,你不會使用任何你可能在Score上得到的索引,並且總是以全掃描結束......這意味着另一種解決方案會更好。 。例如,如果你可以使用像score >= X and Score <= Y
這樣的where子句,它會好得多...
但是,作爲Score存儲爲varchar,它不會那麼容易,我想 - 你應該存儲那些作爲小數,btw ...
爲什麼分數存儲爲文本而不是數字? – cherouvim 2010-02-28 08:04:32
因爲創建桌子的人認爲處理這件事更容易......現在是我必須付出代價。 – erastusnjuki 2010-02-28 12:37:02