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

MySQLで文字列の末尾2文字を基準に並べ替える方法

MySQLでは、ORDER BY句とRIGHT()関数を組み合わせることで、文字列カラムの末尾2文字を基準にレコードを並べ替えることができます。IDの末尾にある番号順にソートしたい場合などに非常に便利なテクニックです。

基本構文

RIGHT(カラム名, 2)は、指定したカラムの値の右端から2文字を取り出す関数です。これをORDER BYに渡すことで、末尾2文字を基準としたソートが実現できます。

select yourColumnName from yourTableName ORDER BY RIGHT(yourColumnName, 2);

サンプルテーブルの作成

それでは、実際に動きを確認してみましょう。まずはテーブルを作成します。

mysql> create table OrderByLast2CharactersDemo
-> (
-> CustomerId varchar(20),
-> CustomerName varchar(20)
-> );
Query OK, 0 rows affected (0.58 sec)

レコードの挿入

次に、insertコマンドでテストデータを挿入します。CustomerIdには「名前-番号」という形式の文字列を格納しています。

mysql> insert into OrderByLast2CharactersDemo(CustomerId,CustomerName) values('John-98','John');
Query OK, 1 row affected (0.20 sec)
mysql> insert into OrderByLast2CharactersDemo(CustomerId,CustomerName) values('Carol-91','Carol');
Query OK, 1 row affected (0.21 sec)
mysql> insert into OrderByLast2CharactersDemo(CustomerId,CustomerName) values('Bob-99','Bob');
Query OK, 1 row affected (0.22 sec)
mysql> insert into OrderByLast2CharactersDemo(CustomerId,CustomerName) values('David-67','David');
Query OK, 1 row affected (0.15 sec)

登録データの確認

select文ですべてのレコードを表示して確認します。

mysql> select *from OrderByLast2CharactersDemo;

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

+------------+--------------+
| CustomerId | CustomerName |
+------------+--------------+
| John-98 | John |
| Carol-91 | Carol |
| Bob-99 | Bob |
| David-67 | David |
+------------+--------------+
4 rows in set (0.00 sec)

末尾2文字で並べ替える実行例

ケース1:昇順(ASC)で並べ替える

ORDER BYはデフォルトで昇順にソートされます。CustomerIdの末尾2文字を基準に並べ替えてみましょう。

mysql> select CustomerId from OrderByLast2CharactersDemo ORDER BY RIGHT(CustomerId, 2);

実行結果:

+------------+
| CustomerId |
+------------+
| David-67 |
| Carol-91 |
| John-98 |
| Bob-99 |
+------------+
4 rows in set (0.01 sec)

末尾の数字「67」→「91」→「98」→「99」の順に、昇順で正しくソートされていることが確認できます。

ケース2:降順(DESC)で並べ替える

降順でソートしたい場合は、DESCキーワードを追加するだけです。

mysql> select CustomerId from OrderByLast2CharactersDemo ORDER BY RIGHT(CustomerId, 2) DESC;

実行結果:

+------------+
| CustomerId |
+------------+
| Bob-99 |
| John-98 |
| Carol-91 |
| David-67 |
+------------+
4 rows in set (0.00 sec)

まとめ

文字列の一部だけを基準にソートしたい場合は、RIGHT()のような文字列関数をORDER BY句内で直接使うのがポイントです。同様の考え方で、先頭部分ならLEFT()、任意の位置ならSUBSTRING()を使うこともできるので、用途に応じて使い分けるとよいでしょう。

  1. MySQLで末尾の文字列に基づいてレコードをソートする方法

    MySQLで文字列の末尾部分(例:「-D」や「-Smith」など)に基づいてレコードをソートしたい場合は、CASE式とORDER BY句を組み合わせることで実現できます。ここでは、実際のサンプルコードを使いながら、手順をわかりやすく解説します。 1. サンプルテーブルの作成 まずはデモ用のテーブルを作成します。顧客ID(ClientId)を自動採番の主キーとし、顧客名(ClientName)を格納するシンプルな構造です。 mysql> create table DemoTable -> ( -> ClientId int NOT NULL AUTO_INC

  2. MySQLのREPLACE()関数でテーブル内の文字を置き換える方法

    MySQLでは、REPLACE()関数を使うことで、文字列の中から特定の1文字だけを簡単に置き換えることができます。この記事では、実際にテーブルを作成し、UPDATE文とREPLACE()関数を組み合わせて文字を置き換える手順を、サンプルコード付きでわかりやすく解説します。 1. サンプルテーブルを作成する まず、置き換え対象となるテーブルを作成します。 mysql> create table DemoTable -> ( -> Name varchar(20) -> ); Query OK, 0 rows affected (0.69 sec