1

誰かが私が間違っていることを教えてくれることを願っています。

SQL テーブルにクエリを実行して、ClassID と ClassName を取得したいと考えています。

ClassID は char(8) で、123.45L1350.12などの値を保持します。

123または350のみが返されるように、その値を短縮しようとしています。

これが私のコードです:

    $classSelect = "SELECT LEFT(ClassID , 3), ClassName FROM Class GROUP BY ClassID";   
    $result = mysql_query($classSelect);

    echo "<td><select multiple size='10' name='Class'>";

    while ($row = mysql_fetch_array($result)) { 
        echo "<option value='Choice'" . $row['ClassID'] . " - " . $row['ClassName'] . "'>" . $row['ClassID'] . " - " . $row['ClassName'] . "</option>";
    }
    echo "</select></td>";
4

2 に答える 2

1

文字列を小数点まで抽出しようとしていて、常に同じ場所にあるとは限らない場合は、MySQL のSUBSTRING_INDEX()関数を使用できます。

SELECT SUBSTRING_INDEX(ClassID, '.', 1) FROM Class

最初の非 10 進文字までの整数を抽出しようとしている場合は、単純CAST()に文字列を抽出することができ、残りは MySQL が行います。

SELECT CAST(ClassID AS UNSIGNED) FROM Class

この後者のアプローチの利点は、結果の列が正しいデータ型になることです。

于 2013-07-18T15:44:12.563 に答える