我有以下表架构:
CREATE TABLE [items] (
[qty] INT NOT NULL,
[price] MONEY NOT NULL,
[subtotal] MONEY NOT NULL,
...
);
有些行看起来像这样:
+--------+-------+----------+
| qty | price | subtotal |
+--------+-------+----------+
| 100000 | 0.017 | 1700.00 |
+--------+-------+----------+
我不喜欢小数美分而且这些数据并不重要,因此我想调整任何具有小数分价格的行。所以我将上面的示例行改为:
+-----+---------+----------+
| qty | price | subtotal |
+-----+---------+----------+
| 1 | 1700.00 | 1700.00 |
+-----+---------+----------+
如果我使用此查询:
SELECT * FROM [items]
WHERE ([price] * 1000) % 10 > 0
...这会让我得到价格超出精确度3的所有行。这对于这个价格为1.7¢的例子很有用。但如果它是0.002¢(即精度5)怎么办?我是否需要为每个我认为可能的精度编写带有一堆OR语句的查询,或者是否有更简单的方式来说WHERE [price] (has precision ≥ 3)
?