ホームページ  >  記事  >  データベース  >  mysql 上級 (8) varchar 型をソートする方法

mysql 上級 (8) varchar 型をソートする方法

黄舟
黄舟オリジナル
2017-02-09 15:27:491446ブラウズ

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型がソートに変換されることが分かりました。このようにサイズごとに並べ替えることができます。

それが電話番号ではなく漢字の場合はどうすればよいでしょうか? 漢字を並べ替えるには単純な変換を実行するだけで済みます。

mysql で order by を使用して、中国語情報を格納するフィールドをペアにします。デフォルトの結果は中国語のピンイン順にソートされません。中国語の文字のピンインでソートしたい場合は、データベースの文字セットを設定する必要があります。 UTF8 に変換し、並べ替える場合、フィールド情報は強制的に GBK に変換され、結果はピンイン順に並べ替えられます。例:

SELECT * FROM table_name ORDER BY CONVERT(column_name USING gbk);

mysql で試してみましたが、結果は非常に満足のいくものでした。

結論は、クエリを実行するときは、convert 関数を通じて文字セット gb2312 を使用してクエリされたデータをエンコードし、変換後に中国語の並べ替えを使用するだけです。しかし、実際にテーブル内のフィールドの文字セットを gb2312 に変更すると、ページ値の転送やデータベースからのアクセスなど、エンコードに関する多くの問題が発生し、非常に面倒になります。クエリ時に文字セットを指定する限り、実際には物理フィールドが gb2312 に変更されるわけではなく、非常に簡単です。

上記は内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。