SQLで文字列連結を行う方法を紹介していきます。
部長
ユーザー一覧を出してほしいなあ
こんなフォーマットで
苗字+スペース+名前+さん
いぬ
わかりました・・・。
前提条件
ユーザーを管理するテーブルから名前を連結してデータを取得する
使用するテーブル:USERSテーブル
+----+-----------+------------+------+
| id | last_name | first_name | age |
+----+-----------+------------+------+
| 1 | 柴犬 | みたらし | 7 |
| 2 | コーギー | いそべ | 8 |
| 3 | ダックス | きなこ | 10 |
| 4 | パグ | あんこ | 3 |
| 5 | シーズー | あずき | 17 |
| 6 | 秋田犬 | うぐいす | 12 |
+----+-----------+------------+------+
6 rows in set (0.000 sec)
条件
- last_nameカラムとfirst_nameカラムを間にスペースを付けて連結させる
- 末尾には’さん’を付ける
文字列連結の方法
文字列連結は『concat関数』を使う方法と、こんなやつ『||』を使う方法、他には『+』などもありますが、今回は 『concat関数』と『||』を使う方法について紹介していきます。
使用するSQLによってもやり方が異なりますので確認してから利用しましょう
concat関数で文字列を連結する
ほとんどのSQLで利用できる方法。ただし、SQLの種類によっては引数を二つまでしか持てないものもがあったりと制限が付く可能性があるので注意。
MySQLは特に制限なく利用できる。
構文
select concat('文字列','文字列') from users;
コードの見方
使用するSQL文
select concat(last_name,' ',first_name,'さん') from users;
結合する文字列の『スペース』や『さん』は”(シングルクォーテーション)で囲う必要があります。
カラムのデータを結合する文字列として指定する場合は”(シングルクォーテーション)で囲う必要はありません。
引数の間は(,)カンマで区切ります。
出力結果
+-----------------------------------------+
| concat(last_name,' ',first_name,'さん') |
+-----------------------------------------+
| 柴犬 みたらしさん |
| コーギー いそべさん |
| ダックス きなこさん |
| パグ あんこさん |
| シーズー あずきさん |
| 秋田犬 うぐいすさん |
+-----------------------------------------+
6 rows in set (0.001 sec)
苗字と名前を結合して末尾に’さん’を付けることができました。
||縦線のやつで文字列を連結する
oracleやPostgreSQLで利用できる方法
構文
select '文字列'||'文字列' from users;
使用するSQL文
select last_name || ' ' || first_name || 'さん' from users;
出力結果
+-----------------------------------------+
| last_name || ' ' || first_name || 'さん'
+-----------------------------------------+
| 柴犬 みたらしさん |
| コーギー いそべさん |
| ダックス きなこさん |
| パグ あんこさん |
| シーズー あずきさん |
| 秋田犬 うぐいすさん |
+-----------------------------------------+
6 rows in set (0.001 sec)