如果使用 sum>100,小于 100 的总和仍然会显示

If using sum>100, sums under 100 will still show

我有一个 table 和一些数据。其中许多数据的名称为 ICA Supermarket,每个数据的总和不同。如果我使用以下 SQL 查询,它也会显示总和低于 100 的数据。如果我将 >= '100' 更改为更高的数字,例如 200,这也适用。

SELECT *
FROM transactions
WHERE data_name LIKE '%ica%'
AND REPLACE(data_sum, '-', '') >= '100'

如果我将 >= 更改为 <=,则根本不会显示任何数据。下面是 table 的样子:

CREATE TABLE IF NOT EXISTS `transactions` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `data_name` tinytext NOT NULL,
  `data_sum` decimal(10,2) NOT NULL
  UNIQUE KEY `id` (`id`)
)

是不是因为data_sum是一个DECIMAL?我怎样才能防止这种情况发生?我想用 DECIMAL 求和:)

注意:data_sum 也将包含大于负数的总和。

REPLACE(data_sum, '-', '') returns 一个字符串。 '100' 也是一个字符串。因此将使用字符串比较。你应该使用 ABS 函数:

SELECT *
FROM transactions
WHERE data_name LIKE '%ica%'
AND ABS(data_sum) >= 100

您是否在寻找 >= 100 且 <= -100 的值?或者只是值 <= -100.

如果是后者,则

... AND data_sum <= -100

这适用于 DECIMAL、INT、FLOAT 等

每个 table 'needs' 一个主键。将 UNIQUE 提升为 PRIMARY。