2013-03-15 45 views
1

我有類似這樣的數據在我的數據庫:返回所有數字以超過2個十進制數字在MySQL

+----+----------------+ 
| id | summ (varchar) | 
+----+----------------+ 
| 1 | 30.23   | 
| 2 | 10.235   | 
| 3 | 20.2300  | 
| 4 | 100.005  | 
| 5 | 5.031   | 
| 6 | 0.0010002  | 
+----+----------------+ 

我怎樣才能收到的所有數據,在具有超過2個十進制數字(零MySQL查詢也算)?

在開始時,我只得到那些有3位數字並以5結尾的數字,所以我使用這個命令substring(summs * 100, -2) = '.5',但我不知道如何獲得各種數字。

+0

你可以減去一個適當的'floored'值。任何具有非零結果的東西都將成爲您的追隨者。 – Strawberry 2013-03-15 14:38:24

回答

2

你可以做這樣的事情: -

SELECT * 
FROM `table` 
WHERE LENGTH(SUBSTR(`summ `,INSTR(`summ `,"."))) >3 
+0

謝謝。我只是將'> 2'改成'> 3',它都起作用了,因爲> 2在查詢中還包含**'.' **,並返回2+,而不是3+。 – Peon 2013-03-15 14:55:58

+0

不客氣。快樂編碼! – 2013-03-15 14:56:24

0

所以,你想要的SQL查詢,以排除 「20.23」,但包括 「20.2300」,是嗎?

鑑於這些論點是字符串而不是浮點數,您可以在查詢中使用字符串函數,特別是INSTR()和LENGTH()的組合。使用前者來定位小數點(句點),然後將其與字符串的長度(減2)進行比較。