gpt4 book ai didi

mysql - 价格低、搜索高

转载 作者:行者123 更新时间:2023-11-29 06:10:43 25 4
gpt4 key购买 nike

我使用下面的代码片段来搜索价格范围。如果我搜索 1-600 美元作为低到高,结果包括 22,500 美元等价格。该列是 varchar。谢谢

if (($price_low) && ($price_high)){
$statement .= " OR item_price BETWEEN ? AND ? ";
push(@binds,$price_low,$price_high);
}
elsif (($price_low) && ($price_high eq "")){
$statement .= " OR item_price > ? ";
push(@binds,$price_low);
}
elsif (($price_high) && ($price_low eq "")){
$statement .= " OR item_price BETWEEN ? AND ? ";
push(@binds,1,$price_high);
}
else { }
my $sth = $dbh->prepare(qq(SELECT * FROM ads WHERE $statement )) or die $DBI::errstr;
$sth->execute(@binds);

最佳答案

你写:

The column is varchar.

这以及您在列中的格式,就是这里的问题。对于您提到的行,您实际上是在这样做:

> SELECT '22,500' BETWEEN 1 AND 600;

MySQL 将强制将字符串 '22,500' 转换为数值,并截掉第一个逗号之后(包括)的所有内容。因此,'22,500'item_price 变为 22,这当然是介于 1 和 600 之间。(如果在执行语句后显示警告会发生什么?我认为您会看到有关不正确的 DOUBLE 截断的警告...)

将您的列转换为真正的数字类型,然后重试您的查询。 (解决@CanSpice指出的问题...)

关于mysql - 价格低、搜索高,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9300957/

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