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

MySQLでドメイン名を並べ替える方法:SUBSTRING_INDEX関数を使ったソート手順

MySQLでドメイン名をソートするには?

MySQLでドメイン名を並べ替えたい場合は、ORDER BY句とSUBSTRING_INDEX()関数を組み合わせるのが効果的です。この記事では、実際のサンプルを使って具体的な手順を解説します。

1. テーブルを作成する

まず、ドメイン名を格納するためのテーブルを作成しましょう。

mysql> create table DemoTable670(DomainName text);
Query OK, 0 rows affected (0.77 sec)

テーブルが正常に作成されました。

2. ドメイン名のレコードを挿入する

次に、INSERTコマンドを使ってドメイン名のデータを登録します。

mysql> insert into DemoTable670 values('www.facebook.com');
Query OK, 1 row affected (0.21 sec)
mysql> insert into DemoTable670 values('www.google.com');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable670 values('www.amazon.com');
Query OK, 1 row affected (0.19 sec)

3. 登録したレコードを確認する

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

mysql> select *from DemoTable670;

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

+------------------+
| DomainName |
+------------------+
| www.facebook.com |
| www.google.com |
| www.amazon.com |
+------------------+
3 rows in set (0.00 sec)

現時点では、挿入した順番どおりに表示されています。

4. SUBSTRING_INDEX()でドメイン名をソートする

ここからが本題です。ドメイン名を正しく並べ替えるには、以下のようなクエリを実行します。

mysql> select *from DemoTable670 order by SUBSTRING_INDEX(DomainName, '.', -2),SUBSTRING_INDEX(DomainName, '.', 2);

実行すると、次のような結果が得られます。

+------------------+
| DomainName |
+------------------+
| www.amazon.com |
| www.facebook.com |
| www.google.com |
+------------------+
3 rows in set (0.00 sec)

仕組みの解説

このクエリのポイントは、SUBSTRING_INDEX()関数の使い方にあります。

  • SUBSTRING_INDEX(DomainName, '.', -2):末尾(右側)から数えて2つ目の「.」以降の部分、つまり「amazon.com」のようなドメイン本体部分を抽出します。これにより、トップレベルドメインを基準とした並び替えが可能になります。
  • SUBSTRING_INDEX(DomainName, '.', 2):先頭(左側)から数えて2つ目の「.」までの部分、つまり「www.amazon」のようなサブドメイン部分を抽出します。同じドメイン内での順序決定に使われます。

このように2段階の基準でソートすることで、「www」などのサブドメインの違いに左右されず、ドメイン本体を優先した自然な並べ替えが実現できます。ドメイン一覧を管理するシステムやレポート生成などでぜひ活用してみてください。

  1. MySQLでデータベース内のテーブル名一覧を取得する方法

    MySQLでデータベースに存在するテーブル名の一覧を取得したい場合は、SHOW TABLESステートメントを使用します。SQLクライアントやコマンドラインから手軽に実行でき、指定したデータベース内の全テーブルを簡単に確認できます。基本構文テーブル名を取得するための基本構文は以下のとおりです。show tables from yourDatabaseName;yourDatabaseName の部分に、対象となるデータベース名を指定してください。実行例それでは、サンプルデータベース「hb_student_tracker」に対して実際にクエリを実行し、テーブル名を取得してみましょう。mysql&g

  2. MySQLで特定の値だけを検索結果の最後に並び替える方法

    MySQLで特定の値を最後に並び替える方法 データベースを扱っていると、「不明」や「未設定」を意味する特定の値だけを、検索結果の一番最後に表示したいケースがあります。MySQLでは、ORDER BY句に比較式を組み合わせることで、このような並べ替えを簡単に実現できます。ここでは、テーブル作成から動作確認まで、サンプルコードとともに手順を解説します。 ステップ1:サンプルテーブルを作成する まず、氏名データを格納するためのテーブルを作成します。 mysql> create table demo57-> (-> id int not null auto_increment pr