我正在try 根据标识符和价格在表上进行SELECT匹配,例如:

SELECT * FROM `table` WHERE `ident`='ident23' AND `price`='101.31';

上面的代码返回零行,而如果删除price='101.31'位,它将返回正确的行.

做一个...

SELECT * FROM `table`;

返回与上面相同的行,并且非常清楚地声明price='=.31'.然而,SELECT无法与其匹配.将=更改为<=可以使其正常工作-但这并不完全是一种解决方案.

有没有一种方法可以在对MySQL浮点执行操作之前将其强制转换为2位,从而使上面的SELECT个操作正常(或其他解决方案)?

谢谢!

推荐答案

把数字转换成小数点对我很管用:

SELECT * FROM table WHERE CAST(price AS DECIMAL) = CAST(101.31 AS DECIMAL);

但是,您可能需要考虑首先让price列为十进制.十进制通常被认为是处理货币价值时使用的最佳类型.

Database相关问答推荐

在Prisma中建立关系

mongodb聚合从另一个查询中获取值

发布 Oracle 和 SQL Server 性能测试是否违反许可?

当我们需要触发程序的返回值时?

什么是范围锁( range-locks)?

MS Access:如何在 VBA 中压缩当前数据库

无法启动 MongoDB:Windows 中的系统错误 1067

如何将视图的所有权限授予任意用户

使用 jQuery 动态填写表单值

审计表:一个表或一个表的每个字段

使用 typeORM 搜索早于日期的数据

我应该如何使用 MySQL 构建我的设置表?

不带 WHERE 子句的 UPDATE 查询

一个 Linq to Sql - 多个 .DBML 文件或一个 .DBML 文件

将 .csv 文件导入 Android 中的 Sqlite

数据库与微服务的一致性

何时在关系数据库中使用枚举或小表?

可以将 SQLAlchemy 配置为非阻塞吗?

最佳用户角色权限数据库设计实践?

如何使用 PL/SQL Developer 连接到远程 Oracle DB?