-2

db 行から 10、12、13、21、06、02、08 の順に取得します

これを次のように並べ替える必要があります: 02, 06, 08, 10, 12, 13, 21

フィールドごとに並べ替える ASC は機能しません。ゼロを削除してから配列をソートしようとしましたが、結果はありません。何かご意見は?

おめり

sort(ARRAY) はトリックをしました

$sql = "SELECT DISTINCT l, item, l, s FROM tr WHERE s = '".$_POST['size']."'  AND type = '".$type."' ORDER BY l ASC";
            $res = mysql_query($sql,$this->conn);
            $type = '<option selected="selected" disabled="disabled"></option>';

            while($row = mysql_fetch_array($res)){
                 $caption[] = $row;
            }
            sort($caption);
            foreach($caption as $row) {     

                    $length = substr($row['item'], strrpos($row['item'], '-') + 1);


                    $type .= '<option value="'.$length.'">'.$length.'</option>';
            }
4

4 に答える 4

1

それらの数値の列タイプを変更してからINT、それらを順序付けます。私はあなたが今あなたのコラムを持っていると思いCHARますVARCHAR

于 2012-12-26T17:53:18.467 に答える
1

@Eric Petroelje私が使用する:

SELECT * FROM table ORDER BY CAST(col AS SIGNED) ASC

または、すべての数字の前にゼロを追加します。たとえば、1 は 0001 になり、2 は 0002 になり、ゼロがあり、それらもソートされます。ああ、あなたも 02 と 2 を使用しているとコメントしているようですが、これは無視してかまいません。

または、正しい順序で余分な INT 列を追加します。

于 2012-12-26T18:54:32.823 に答える
0

データは CHAR または VARCHAR として MySQL に格納されているように聞こえるため、列が並べ替えられると、数値ではなく文字列のように並べ替えられます。

列のタイプを INT に変更する以外に、次のように、MySQL に順序付けのために整数として処理させることができます (列のすべての値が数値であると仮定します)。

SELECT fields
FROM mytable
ORDER BY CAST(col AS SIGNED)
于 2012-12-26T17:57:31.447 に答える
0

ソートは、MySQL サーバー経由で行う必要があります。適切な順序が得られない場合は、クエリが間違っている可能性があります。別の問題は、数値をテキストまたは別のデータ型として保存している可能性がありますか?

ただし、先頭の 0 を削除するには、変数を明示的に整数にキャストできます。

$numstring = (int)$realint;

于 2012-12-26T17:52:17.207 に答える