gpt4 book ai didi

mysql - "="未在 MySQL 中找到确切数据库值的匹配项,但 LIKE 有效

转载 作者:太空宇宙 更新时间:2023-11-03 11:50:05 24 4
gpt4 key购买 nike

我无法从我的 adSpec 表中选择宽度值完全匹配的特定值。这不会发生在列中的所有单元格上。

我的 adSpec 表

╔═══════════╦══════════════╗
║ adSpecId ║ width ║
╠═══════════╬══════════════╣
║ 100 ║ 154.00800 ║
║ 101 ║ 319.96799 ║
║ 102 ║ 342.00000 ║
║ 103 ║ 342.00000 ║
╚═══════════╩══════════════╝

不返回结果

SELECT * FROM `adSpec` where `width` = '154.00800'

返回结果

SELECT * FROM `adSpec` where `width` LIKE '154.00800'

使用“=”甚至可以与同一列中的其他值一起使用

SELECT * FROM `adSpec` where `width` = '319.96799'

注意:db中的值后面没有尾随空格


宽度列详细信息

类型: float

长度:10

小数:5

最佳答案

FLOAT 对于精确比较不可靠。

引用:

由于浮点值是近似值而不是作为精确值存储,因此尝试在比较中将它们视为精确值可能会导致问题。它们还受平台或实现依赖性的影响。有关更多信息,请参阅第 B.5.4.8 节,“浮点值问题” https://dev.mysql.com/doc/refman/5.7/en/floating-point-types.html

这是一个关于不可靠性的演示:

mysql> create table adSpec(adSpecId int, width float(10,5));
Query OK, 0 rows affected (0.00 sec)

mysql> insert into adSpec values(100,154.00800);
select *,Query OK, 1 row affected (0.01 sec)

mysql> select *, round(width, 20), width = '154.00800' from adSpec;
+----------+-----------+--------------------------+---------------------+
| adSpecId | width | round(width, 20) | width = '154.00800' |
+----------+-----------+--------------------------+---------------------+
| 100 | 154.00800 | 154.00799560546875000000 | 0 |
+----------+-----------+--------------------------+---------------------+
1 row in set (0.00 sec)

如果你想做精确比较,试试十进制。

十进制:

mysql> create table adSpec(adSpecId int, width decimal(10,5));
Query OK, 0 rows affected (0.01 sec)

mysql> insert into adSpec values(100,154.00800);
Query OK, 1 row affected (0.00 sec)

mysql> select *, round(width, 20), width = '154.00800' from adSpec;
+----------+-----------+--------------------------+---------------------+
| adSpecId | width | round(width, 20) | width = '154.00800' |
+----------+-----------+--------------------------+---------------------+
| 100 | 154.00800 | 154.00800000000000000000 | 1 |
+----------+-----------+--------------------------+---------------------+
1 row in set (0.00 sec)

关于mysql - "="未在 MySQL 中找到确切数据库值的匹配项,但 LIKE 有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35997734/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com