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

【MySQL】単一のクエリで異なる長さの部分文字列を表示しUNION ALLで結果を結合する方法

概要

MySQLでは、SUBSTR()関数を使って文字列の一部(部分文字列)を抽出できます。この記事では、単一のクエリ内で異なる長さの部分文字列を取得し、UNION ALLを使って複数の結果を1つに結合する方法を、テーブル作成から順に解説します。

サンプルテーブルの作成

まず、テーブルを作成しましょう。

mysql> create table DemoTable856(Title text);
Query OK, 0 rows affected (0.89 sec)

レコードの挿入

INSERTコマンドを使って、テーブルにいくつかのレコードを挿入します。

mysql> insert into DemoTable856 values('Introduction to MySQL');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable856 values('Java in depth');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable856 values('C++ with Data Structure');
Query OK, 1 row affected (0.17 sec)

レコードの確認

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

mysql> select *from DemoTable856;

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

+-------------------------+
| Title |
+-------------------------+
| Introduction to MySQL |
| Java in depth |
| C++ with Data Structure |
+-------------------------+
3 rows in set (0.00 sec)

異なる長さの部分文字列を取得して結合するクエリ

SUBSTR()関数で抽出する文字数を変えた2つのSELECT文を、UNION ALLで連結します。UNION ALLを使うと、重複を排除せずにすべての結果をそのまま1つの結果セットとして取得できます。

mysql> select substr(Title,1,12) from DemoTable856
    UNION ALL
    select substr(Title,1,4) from DemoTable856;

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

+--------------------+
| substr(Title,1,12) |
+--------------------+
| Introduction |
| Java in dept |
| C++ with Dat |
| Intr |
| Java |
| C++ |
+--------------------+
6 rows in set (0.03 sec)

クエリのポイント

SUBSTR(Title, 1, 12)は、Title列の値の先頭(1文字目)から12文字分を抽出することを意味します。同様にSUBSTR(Title, 1, 4)は先頭から4文字を抽出します。UNION ALLによって両方のSELECT文の結果が縦に連結されるため、3レコード×2パターンの合計6行が返されます。

なお、UNION ALLは重複行もそのまま表示します。もし重複する結果を取り除きたい場合は、UNION ALLの代わりにUNIONを使用してください。この手法を応用すれば、1回のクエリで複数パターンの切り出し結果をまとめて取得できるため、アプリケーション側での処理をシンプルにできます。

  1. MySQLでSUM関数とFORMAT関数を組み合わせて集計結果をフォーマットする方法

    MySQLでは、SUM()関数とFORMAT()関数を組み合わせることで、数値カラムの合計値を計算しつつ、結果を見やすい形式(桁区切りのカンマ付き・小数点以下の桁数指定)で表示できます。この記事では、実際にテーブルを作成し、データを挿入してから、SUM と FORMAT を組み合わせたクエリの実行方法を順を追って解説します。 1. テーブルの作成 まず、CREATE TABLE 文を使ってサンプル用のテーブルを作成します。ここでは、金額を格納する Amount カラム(FLOAT 型)を1つだけ持つシンプルなテーブルを用意しました。 mysql> create table DemoTa

  2. 複数行の文字列を1行に結合し、対応するIDの合計も表示するMySQLクエリの書き方

    GROUP_CONCAT()とSUM()を組み合わせた集計方法複数行に分かれた文字列を1つの行にまとめて結合し、さらにIDの合計値を別の列として同時に表示したい場合は、GROUP_CONCAT()関数とSUM()関数を組み合わせることで実現できます。ここでは、実際にテーブルを作成し、動作を確認する手順を見ていきましょう。1. サンプルテーブルの作成まず、学生IDと学生名を持つテーブルを作成します。mysql> create table DemoTable1960 ( StudentId int, StudentName varchar(20) ); Que