Моя колонка базы данных представляет собой тип данных varchar(25)
со значениями 1 1/2 ", 1/2", 3 "и 4", представляющие диаметры шлангов для пожарной станции. Проблема, с которой я сталкиваюсь, заключается в том, что следующий код выплескивает диаметры шлангов в вышеуказанном порядке в базе данных, когда я хочу заказать в порядке возрастания, что означает, что я хочу «1/2, 1 1/2, 3, 4» не с 1 1/2 спереди. Есть ли способ сделать это в SQL с дробными значениями данных для моего типа данных varchar
?Правильная сортировка дробных данных в SQL Выберите
Спасибо!
PHP код
// Select hose locations from fire database
$query = "SELECT hose_diameter FROM hose_diameter ORDER BY hose_diameter";
$result = $mysqli->query($query) or die($mysqli->error.__LINE__);
//FETCH ROWS
if($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
print "<option value=\"".$row['hose_diameter']."\">".$row['hose_diameter']."</option>";
}
}
Лично я бы изменил вашу базу данных так, чтобы в ней было фактическое десятичное значение, которое вы могли бы отсортировать правильно. У вас могут быть как обычные столбцы, так и один, вычисленный на основе другого, или просто иметь десятичный код, и пусть приложение переводит это на читаемые значения. Или у вас может быть таблица перевода, к которой вы присоединяетесь (например, идея подзапроса Гордона, но с реальной таблицей) также будет работать, если ваши возможные значения будут исправлены. Но я бы избегал иметь только смешанную строку в базе данных, если вы хотите рассматривать ее как число. –