1

mySQLは比較的新しいので、これはおそらく簡単なものです。

Zip3つの列を持つ名前のテーブルがあります。

Zip varchar(255)
City varchar(255)
State enum('AL','AK','AZ','AR','CA',etc.,etc., 'WY'

クエリを実行すると:

SELECT DISTINCT State FROM Zip ORDER BY State ASC;

私はこの結果を得る:

+-------+
| State |
+-------+
|       |
| AL    |
| AK    |
| AZ    |
| AR    |
etc.

したがって、リストを最初の文字でアルファベット順に並べ替えることはできますが、2番目の文字でアルファベット順に並べ替えることはできません。

私はどこでも(w3schools、dev.mysql.com、stackoverflow、Google)検索しましたが、ORDER BY「2番目の文字/文字」について何も見つかりませんでした(または、少なくとも、何も見つからなかったと思います。多分私は理解していませんでした)。

私に何ができるかについて何かアイデアはありますか?

4

3 に答える 3

4

列挙型を文字型に変換してみてください。

SELECT DISTINCT State
FROM Zip
ORDER BY CAST(State AS CHAR)
于 2011-11-24T20:55:48.300 に答える
3

STATEは列挙型であるため、その列挙型の定義に配置された順序で並べ替えられます。(あなたの定義には、があり、それが彼らが注文されている方法であることに注意してくださいAZAR

(米国の州の略語は2文字より長くないため)に変更STATEすると、正常に機能するはずです。CHAR(2)ORDER BY

(また、ZIP最大us郵便番号は10文字であるため、大幅に削減できます。ZIPの場合は5文字、ハイフン(ダッシュ)、および+4拡張子です。)

于 2011-11-24T20:56:59.060 に答える
0

列挙型を正しくソートしませんでした。標準のCHAR値を使用していて、列挙型がない場合は機能します。ただし、列挙型を固定された順序で設定するため、列挙型が設定されたように並べ替えられます。

列挙型を注文します。

State enum('AK','AL','AR','AZ','CA',etc.,etc., 'WY'
于 2011-11-24T20:52:58.880 に答える