0

所以我要搜索“1.00”需要在 1、1.0、1.00、1.000、11、11.00 等上找到匹配项

所以我所追求的是一个简单的搜索,但尾随小数位是可选的,因为它们可能会或可能不会被用户添加到数据库中。

目前我有这个,这显然不会成功

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
4

2 回答 2

1

您真正想做的是将这些字符串作为数字进行比较,对吗?如果是这样,则price使用加法转换为数字。

尝试这个:

SELECT *
FROM `prices`
WHERE (0 + `price`) = 1;

如果是小数,你可以这样做:

SELECT *
FROM `prices`
WHERE ROUND( 0 + `price` , 2 ) = 0.99;
于 2012-11-20T01:55:54.590 回答
0

看起来我可以使用 TRIM() 函数来实现这一点,如

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

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

于 2012-11-20T01:55:42.367 回答