MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLで数値列を昇順(ASC)に並べ替えるクエリの書き方:CAST()関数の活用

MySQLで数値データを正しく昇順(ASC)に並べ替えたい場合、CAST()関数を活用すると便利です。文字列として保存された数値でも、CAST()関数で整数型に変換してからソートすれば、期待通りの順序で表示できます。

ここでは、実際にテーブルを作成し、データを挿入して、CAST()関数による昇順ソートの手順を具体的に見ていきましょう。

サンプルテーブルの作成

まず、以下のコマンドでテーブルを作成します。

mysql> create table DemoTable
    (
    Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    Score int
    );
Query OK, 0 rows affected (0.72 sec)

レコードの挿入

次に、INSERTコマンドを使っていくつかのレコードを追加します。

mysql> insert into DemoTable(Score) values(10);
Query OK, 1 row affected (0.19 sec)

mysql> insert into DemoTable(Score) values(100);
Query OK, 1 row affected (0.14 sec)

mysql> insert into DemoTable(Score) values(11);
Query OK, 1 row affected (0.13 sec)

mysql> insert into DemoTable(Score) values(97);
Query OK, 1 row affected (0.14 sec)

mysql> insert into DemoTable(Score) values(78);
Query OK, 1 row affected (0.13 sec)

mysql> insert into DemoTable(Score) values(89);
Query OK, 1 row affected (0.18 sec)

登録済みレコードの確認

SELECT文ですべてのレコードを表示してみましょう。

mysql> select *from DemoTable;

実行結果は以下のとおりです。

+----+-------+
| Id | Score |
+----+-------+
| 1  | 10    |
| 2  | 100   |
| 3  | 11    |
| 4  | 97    |
| 5  | 78    |
| 6  | 89    |
+----+-------+
6 rows in set (0.00 sec)

CAST()関数で数値列を昇順に並べ替える

数値列を昇順(ASC)にソートするためのクエリがこちらです。CAST()関数でScore列をSIGNED INTEGER型に変換してから、ORDER BY句で並べ替えています。

mysql> select *from DemoTable order by cast(Score AS SIGNED INTEGER) ASC;

このクエリを実行すると、次のような出力が得られます。

+----+-------+
| Id | Score |
+----+-------+
| 1  | 10    |
| 3  | 11    |
| 5  | 78    |
| 6  | 89    |
| 4  | 97    |
| 2  | 100   |
+----+-------+
6 rows in set (0.00 sec)

まとめ

出力結果を見ると、Score列が「10 → 11 → 78 → 89 → 97 → 100」の順に正しく昇順で並んでいることがわかります。特に、Score列がVARCHAR型などの文字列型で保存されている場合、そのままORDER BYを使うと辞書順でソートされ、「10, 100, 11…」のような意図しない順序になってしまうことがあります。そんなときもCAST()関数で数値型に変換すれば、正確な数値順のソートが可能になります。

  1. MySQLでデータベース内のテーブル数を表示するクエリの書き方

    INFORMATION_SCHEMA.TABLESを使ってテーブル数を取得するここでは例として、「WEB」というデータベースを使用しているものとします。このデータベース内に存在するテーブルの総数を調べたい場合、MySQLではINFORMATION_SCHEMA.TABLESを利用するのが便利です。INFORMATION_SCHEMAは、MySQLサーバーが管理しているメタデータ(データベース名、テーブル名、カラム情報など)を格納する仮想データベースであり、これを参照することでスキーマに関する情報をSQLで簡単に取得できます。テーブル数を表示するクエリ「WEB」データベース内のテーブル数を表示す

  2. MySQLのORDER BY ASCでNULL値を最下部に表示する方法

    MySQLのORDER BY ASCでNULL値を最下部に表示する方法MySQLでは、ORDER BY句を昇順(ASC)で使用した場合、デフォルトではNULLが先頭(上部)に表示されます。しかし実務では、「NULLは一番下に表示したい」というケースがよくあります。このような場合には、CASE式とORDER BYを組み合わせることで簡単に実現できます。この記事では、NULLや空文字列()を含むデータを昇順ソートしつつ、NULLを最下部に表示する方法を、具体的なサンプルコードとともに解説します。1. サンプルテーブルの作成まず、テーブルを作成します。mysql> create table D