.NETエンジニア・プログラマ向けの技術情報・業界ニュースをお届けします。

  1. FEnet.NETナビ
  2. .NETコラム
  3. データベース
  4. MySQL
  5. MySQLで文字列結合する方法とは?使用方法や用例を紹介

MySQLで文字列結合する方法とは?使用方法や用例を紹介

  • MySQL
  • データベース
公開日時:   更新日時:
MySQLで文字列結合する方法とは?使用方法や用例を紹介
この記事でわかること
    基本情報技術者試験の試験対策はこちら>>
    最新情報や関心のある情報を毎日お届け。 FEnetメールマガジン メルマガ登録はこちらから>>

    システム
    エンジニア
    MySQLでの文字列結合について、教えてください。

    プロジェクト
    マネージャー
    では、3つの文字列結合の手段について見ていきましょう。

    MySQLでの文字列結合とは?


    MySQLには指定した情報、文字列を結合して文字列として返す、文字列結合という機能、関数があります。

    この文字列結合機能を使うことで、MySQL内の情報を連結して1つの情報として表示することができます。

    この記事では文字列結合をするための方法を紹介します。

    MySQLで文字列結合する方法は1つだけ?

    MySQLで文字列結合する手段は3つあります。

    それは、文字列関数の「CONCAT」を使う方法と、集約関数「GROUP_CONCAT」を使う方法と、ダブルパイプ(||)演算子を使って結合する方法、この3種類があります。

    ただし後者のダブルパイプを使う方法は詳しくは後述しますが「sql_mode」の設定を変えることになるので使用するときは注意しましょう。

    文字列結合関数「CONCAT」とは

    「CONCAT」とは、引数を指定することでその引数を文字列結合された結果の文字列を返す、MySQLでの文字列結合の関数です。

    MySQLではこの関数を使うことで、文字列結合を行うことができます。

    文字列結合関数「CONCAT」の使い方

    CONCATの書式は以下となります。
    CONCAT( 文字列1, 文字列2, ・・・文字列N )
    このように、関数の中に結合したい情報(文字列)をカンマ区切りで並べることでその文字列たちが順番に文字列結合された文字列が返されます。

    MySQLでは一番標準的な文字列結合の方法です。

    CONCAT関数を使用することで文字列結合をすることができます。引数は1つ以上を持つ必要があります。

    1.引数が文字列だった場合

    2.引数に数値が含まれている場合

    3.引数にNULLが含まれている場合

    このように、NULLが含まれているとNULLが返ってきてしまうので、IFNULL()関数などを使って回避するのが良いでしょう。

    文字列結合関数「CONCAT」でテーブルの列から文字列結合するには

    name_list
    ID family_name given_name year month day
    1 山田 太郎 1999 01 20
    2 田中 次郎 2010 12 31

    上記のようなテーブルがあったとき、「姓」と「名」を繋げて、氏名としたい場合はどうすればいいでしょう。

    これも文字列結合関数「CONCAT」を使うこと可能となります。

    また、yearとmonthとdayを繋げて、「年月日」にすることも可能です。CONCATでは、列指定と文字列を併用して文字列結合することが可能です。

    また、CONCATはSELECT句だけではなく、WHERE句などにも使うことができます。

    ただし通常この方法だと索引が使われないため、あまりお勧めしません。

    集約関数「GROUP_CONCAT」とは

    GROUP_CONCATとは、テーブルの指定した列を指定の順番で並べて、指定の文字で連結していく文字列結合関数です。

    厳密には文字列結合関数とは違うのですが、CONCATを「列の結合」、GROUP_CONCATを「行の結合」と考えると似ているので紹介します。

    集合関数「GROUP_CONCAT」の使い方

    GROUP_CONCATの書式は以下となります。

    指定した列を、ORDER BYで指定した順に並べ、SEPARATORで指定した文字列で結合した文字列を返す。という関数になります。

    実際の使用例を上げていきましょう。

    score_list
    ID family_name given_name score
    1 山田 太郎 98
    2 田中 次郎 70
    3 山田 太郎 85

    上記のようなテーブルがあった場合、同じfamily_nameでまとめ、scoreをカンマ区切りにして文字列結合するときは以下の方法を取ります。

    また、scoreの昇順で並べることも可能です。

    また前述のCONCATとも組み合わせることもできます。

    このようにしてMySQLではデータをカンマ区切りにしてデータ取得をすることができます。

    ダブルパイプ(||)演算子を使って結合する方法

    Oracleなどで使われる文字列結合の方法としてダブルパイプ(||)を使って文字列結合する方法がありますが、MySQLではダブルパイプは「OR」演算子として使用されるため、「CONCAT」の代用としては使用することができません。

    ただし特定の設定を行うことでCONCATの代用として使用することができるようになります。

    以下ではその方法を説明します。

    ダブルパイプ演算子をCONCATとして使えるようにするには

    ダブルパイプでCONCATと同じく文字列結合の機能にするためには、以下のコマンドを実行します。

    このコマンドを実行することで、MySQLでOracleと同様にダブルパイプで文字列結合が可能となります。

    このようにダブルパイプでCONCATと同様の動きになるようになります。

    このコマンドはセッション中のみ生きる設定で、MySQLを再起動すると無効になります。
    設定ファイル(my.ini等)に記述しておくことで常時反映される設定値として動作するため、再起動しても反映された状態となって常に使用可能となります。

    ただしこの方法は本来の「OR」の代用として使っているダブルパイプの機能も機能しなくなるため(CONCATの機能になる)、当初の「OR」として使用している機能があると動作しなくなります。システム全体として利用するには考えた上で実施しましょう。

    システム
    エンジニア
    それぞれの関数を使い分けて、複数のレコードの結合に対応できますね。

    プロジェクト
    マネージャー
    非常に便利な関数ですので、ぜひマスターして活用してください。

    MySQLでの文字列結合についてまとめ

    この記事ではMySQLでの文字列結合について説明しました。

    列や指定文字列を結合する「CONCAT」と、指定列を指定の文字でレコード(行)で結合する「GROUP_CONCAT」は、情報を整理したり、欲しい情報でのデータ出力をする際に非常に役立つ関数です。

    これらの関数をうまく使いこなして、効率的なMySQLプログラマーになりましょう。

    FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
    株式会社オープンアップシステムロゴ

    株式会社オープンアップシステムはこんな会社です

    秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
    数多くのエンジニアが集まります。

    秋葉原オフィスイメージ
    • スマホアプリから業務系システムまで

      スマホアプリから業務系システムまで

      スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。

    • 充実した研修制度

      充実した研修制度

      毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。

    • 資格取得を応援

      資格取得を応援

      スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。

    • 東証プライム上場企業グループ

      東証プライム上場企業グループ

      オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。

      安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。

    株式会社オープンアップシステムに興味を持った方へ

    株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。

    年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
    まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。

    株式会社オープンアップシステムへのご応募はこちら↓
    株式会社オープンアップシステムへのご応募はこちら↓

    新着案件New Job