尝试使用浮点值作为条件执行 SELECT 查询通常会导致意外行为。以下问题举例说明了这一挑战:
<code class="sql">SELECT * FROM `table` WHERE `ident`='ident23' AND `price`='101.31';</code>
即使数据库中的价格列出现值 101.31,此查询也会返回零行。删除价格条件会返回预期的行。
要解决此问题,请考虑以下解决方案:
将浮点值转换为比较之前使用 DECIMAL 类型可确保正确的精度:
<code class="sql">SELECT * FROM table WHERE CAST(price AS DECIMAL) = CAST(101.31 AS DECIMAL);</code>
考虑将价格列修改为 DECIMAL 类型,这样可以为货币值提供更好的精度:
ALTER TABLE `table` MODIFY COLUMN `price` DECIMAL;
以上是以下是根据您提供的文本提出的一些基于问题的标题,每个标题都侧重于问题的不同方面: 选项 1(聚焦问题): * 为什么我的 MySQL SELECT 查询不返回任何结果的详细内容。更多信息请关注PHP中文网其他相关文章!