如果使用 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。
我有一个 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。