2012-11-20 53 views
0

因此,我在搜索「1.00」後需要在1,1.0,1.00,1.000,11,11.00, etc是否有可能搜索一個值,可選地查看以十進制值結尾的0

所以我追求的是一個簡單的搜索,但隨着小數點後的位置是可選的,因爲它們可能會或可能不會被用戶添加到數據庫中。

目前我有這個,這顯然不會做的伎倆

SELECT * 
FROM `prices` 
WHERE `price` = '%1.00'; 

做下面的工作,但我喜歡的東西更簡潔,作爲

SELECT * 
FROM `prices` 
WHERE `price` = '1.00' 
OR `price` = '1.0' 
OR `price` = '1'; 
# NOTE THE LACK OF DECIMAL PLACE 

回答

0

看起來像我可以使用TRIM()函數實現這一點,如

SELECT TRIM(TRAILING '0' FROM `price`) as trimmed 
FROM `prices` 
WHERE trimmed = '1' 

https://stackoverflow.com/a/7968606/1613391

+0

實際上,因爲花車自動剝尾0的時候,他們保存到數據庫中,我永遠不會有在這種情況下,值存儲爲1.0,所以我只需要修改我比較的值以去掉尾隨的0,所以它更像是一個PHP任務。 – duellsy

1

你真正想做的是將這些字符串作爲數字進行比較,對吧?如果這是真的,那麼使用加法將price轉換爲數字。

試試這個:

​​

如果它是一個小數,你可以這樣做:

SELECT * 
FROM `prices` 
WHERE ROUND(0 + `price` , 2) = 0.99; 
+0

雖然它是一個有效的響應(因此upvote)我無法使用我們擁有的引擎來生成該SQL,因爲我無法修改where子句中的列作爲column => value – duellsy

相關問題