Я использую код снипета ниже, чтобы искать диапазоны цен. Если я ищу 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);
Если в вашей базе данных цена представляет собой доллары, зачем использовать varchar вместо численного типа данных? – hexparrot
Значения в столбце 'item_price' в базе данных - это номера, которые были отформатированы как строки, включая разделители запятой? Этот тип форматирования обычно выполняется во время вывода, а не перед хранением в БД. –
Можете ли вы действительно использовать 'BETWEEN' и'> 'для столбца varchar без явного ввода данных в виде числа? – TLP