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

MySQLで数値のクエリ結果を分割する方法【CONCAT関数の活用】

MySQLで数値のクエリ結果を分割したい場合、CONCAT()関数を使用すると簡単に実現できます。この記事では、実際にテーブルを作成し、数値の先頭1桁と残りの桁を「/」で区切って表示する方法を、具体的なサンプルコードとともに解説します。

1. サンプルテーブルを作成する

まずは動作確認用のテーブルを作成しましょう。ここでは「StudentId」というint型カラムを持つテーブルを用意します。

mysql> create table DemoTable
    (
    StudentId int
    );
Query OK, 0 rows affected (0.68 sec)

2. テーブルにレコードを挿入する

次に、INSERT文を使ってサンプルデータを登録します。

mysql> insert into DemoTable values(2222);
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable values(5555);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values(4567);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values(8905);
Query OK, 1 row affected (0.15 sec)

3. 登録したデータを確認する

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

mysql> select *from DemoTable;

出力結果

+-----------+
| StudentId |
+-----------+
| 2222      |
| 5555      |
| 4567      |
| 8905      |
+-----------+
4 rows in set (0.00 sec)

4. 数値を分割して表示するクエリ

ここからが本題です。以下のクエリでは、CONCAT()LEFT()RIGHT()LENGTH()を組み合わせて、数値の先頭1桁と残りの桁を「/」で区切って表示しています。

mysql> select concat(left(StudentId, 1), '/', right(StudentId, length(StudentId)-1)) splitNumericalValue from DemoTable;

出力結果

+---------------------+
| splitNumericalValue |
+---------------------+
| 2/222               |
| 5/555               |
| 4/567               |
| 8/905               |
+---------------------+
4 rows in set (0.00 sec)

クエリの仕組みを解説

このクエリがどのように動作しているのか、各関数の役割を見ていきましょう。

  • LEFT(StudentId, 1):値の左側から1文字(先頭の桁)を取り出します。
  • RIGHT(StudentId, length(StudentId)-1):文字列全体の長さから1を引いた分だけ右側から取り出すことで、先頭以外の残りの桁を取得します。
  • CONCAT():取り出した先頭の桁、区切り文字「/」、残りの桁を連結して1つの文字列にします。

例えば「2222」という値の場合、「LEFT」で「2」、「RIGHT」で「222」を取得し、CONCATで連結することにより「2/222」という結果が得られます。

応用ポイント

区切り位置や区切り文字を変更すれば、さまざまな形式への変換にも対応できます。例えば、先頭2桁を分けたい場合は left(StudentId, 2)right(StudentId, length(StudentId)-2) に変更するだけでOKです。また、区切り文字を「-」や「:」に置き換えれば、電話番号や時刻のようなフォーマットへの整形も可能です。データの見せ方を工夫したい場面で、ぜひ活用してみてください。

  1. MySQLで列(カラム)を分割する方法!SUBSTRING_INDEX関数の使い方を徹底解説

    MySQLで列を分割するには?SUBSTRING_INDEX関数の基本MySQLで1つの列に格納された文字列を区切り文字で分割したい場合、SUBSTRING_INDEX()関数を使用します。この記事では、アンダースコア(_)で区切られた氏名データを分割する具体例を通じて、その使い方をわかりやすく解説します。1. サンプルテーブルの作成まず、以下のコマンドでテーブルを作成します。mysql> create table DemoTable -> ( -> Name varchar(40) -> );Query OK, 0 rows affected (1.

  2. MySQLでクエリの実行結果を変数に代入する方法をわかりやすく解説

    MySQLでクエリ結果を変数に代入する基本MySQLでは、@変数名 の形式でユーザー定義変数を使用することで、クエリの実行結果を変数に格納できます。代入には :=(代入演算子)を使い、SELECT文の中で直接値を取得するのが一般的な方法です。この記事では、実際にテーブルを作成し、クエリ結果を変数に代入するまでの一連の手順をサンプルコード付きで紹介します。1. サンプルテーブルを作成するまず、以下のようにCREATE TABLE文でテーブルを作成します。mysql> create table DemoTable1864 ( Id int, FirstName var