我想做一个 SELECT
基于标识符和价格匹配表,例如:
SELECT * FROM `table` WHERE `ident`='ident23' AND `price`='101.31';
如果删除 price='101.31'
位返回正确的行。
正在做。。。
SELECT * FROM `table`;
返回与上面相同的行,并且非常清楚地说明 price='101.31'
. 但是select无法匹配它。改变 =
至 <=
使它工作-但这并不完全是一个解决方案。
有没有一种方法可以在对mysql float执行操作之前将其强制转换为2位数字,从而使 SELECT
工作(或其他解决方案)?
谢谢!
8条答案
按热度按时间nhhxz33t1#
也许是这样的:
tuwxkamq2#
今天,我也遇到了同样的情况,只要使用mysql的format函数就可以解决,它会返回与where子句完全匹配的结果。
说明:
FORMAT('col name', precision of floating point number)
luaexgnf3#
小数点对我来说很有用:
但是,您可能需要考虑
price
列的第一位是小数。十进制通常被认为是处理货币价值时最好使用的类型。wljmcqd84#
它不起作用,因为浮点数本身就不精确。实际值可能类似于“101.3100000000001”,您可以先对其使用round()将其四舍五入到2位,或者最好使用十进制类型而不是浮点。
jecbmhm35#
我一直在寻找解决方案,但最后我还是用我以前的php number\u format()完成了,它是在@hmasif的解决方案中找到的。
使用此选项,您将获得float-mysql匹配:
其中5是小数点后的五个字符串。e、 g.7.93643美元
p5fdfcr16#
试试这个:从pricelike101.31的表中选择*;
3hvapo4f7#
永远不要用花车赚钱。
23c0lvtd8#
这有用吗?