MySQL で varchar 型を並べ替える方法
asc upgrade
desc 降順
MySQL では、デフォルトの order by では数値と日付型のみを並べ替えることができますが、varchar 文字型の並べ替えには役に立たないようです クラスメートに教えてください。 varchar 型のソート問題を解決する方法を紹介しました。
今日全国電話番号テーブルをソートしていて面白い問題を見つけたので、isdcodeフィールドを小さいものから大きいものまでソートしたいと思い、次のように書きました
SELECT * FROM gb_country_isdcode ORDER BY isdcode asc
結果は以下の通りです。私が望んでいた結果ではなく、asc ソートは正しかったので、検索して検索して、最終的に理由を見つけました。 int型に変換すれば普通にソートできます
SELECT * FROM gb_country_isdcode ORDER BY (isdcode+0) asc欲しいデータの種類が比較的大きいようです。 。しかし、なぜ +0 が良いのでしょうか? +0以降はINT型がソートに変換されることが分かりました。このようにサイズごとに並べ替えることができます。
それが電話番号ではなく漢字の場合はどうすればよいでしょうか? 漢字を並べ替えるには単純な変換を実行するだけで済みます。
SELECT * FROM table_name ORDER BY CONVERT(column_name USING gbk);mysql で試してみましたが、結果は非常に満足のいくものでした。
結論は、クエリを実行するときは、convert 関数を通じて文字セット gb2312 を使用してクエリされたデータをエンコードし、変換後に中国語の並べ替えを使用するだけです。しかし、実際にテーブル内のフィールドの文字セットを gb2312 に変更すると、ページ値の転送やデータベースからのアクセスなど、エンコードに関する多くの問題が発生し、非常に面倒になります。クエリ時に文字セットを指定する限り、実際には物理フィールドが gb2312 に変更されるわけではなく、非常に簡単です。