0

私は次のmysqlテーブルを持っています:

テーブル名:items

item_no qty
1l1000bk 1
1l1020be 2
1l900bk 12
1l820be 19

form次の PHP コードを含む他のページに送信する を作成した後:

$from = $_POST['from'];
$to = $_POST['to'];

$length = max(strlen($from), strlen($to)); 

$query6 = "SELECT * FROM items WHERE SUBSTRING(item_no, 1, ".$length.")   BETWEEN '".$from."' AND '".$to."' ORDER BY item_no Desc";

$result6 = mysql_query($query6);
if(!$result6){
    mysqli_error();
    exit();
}



if(mysql_num_rows($result6)>0){
$num6 = mysql_num_rows($result6);

for($i=0;$i<$num6;$i++){    

$row6 = mysql_fetch_assoc($result6);
echo $row6['item_no']."</br>";
}
}

select ステートメントによると、出力は完全に間違っています。検索された item_no を降順で出力する必要があります。

1l900bk
1l820be
1l1020be
1l1000bk

1l1000 が 1l900 より小さいのはなぜですか? 3 番目の文字のみを比較しているようですが、文字列全体を比較するにはどうすればよいですか?

助けてください !

4

2 に答える 2

0

これは、整数ではなく文字列としてソートされるためです。並べ替えたい場合は、すべての数字が同じであることを確認する必要があります。したがって、1000 と 900 がある場合は、0900 を使用してください。そうすれば、問題なく並べ替えられます。

于 2013-06-24T11:32:22.930 に答える
0
         SELECT column_name(s)
         FROM table_name
         WHERE column_name BETWEEN value1 AND value2;
于 2013-06-24T11:11:39.950 に答える