MySQLで文字列を結合する方法について書いています。
文字列を結合する時には、CONCAT関数またはCONCAT_WS関数を使うと良いです。
MySQLのバージョン8.0.32で、動作を検証しています。
文字列関数については公式ドキュメントのこちらのほうに記載があります。
CONCAT関数で文字列を結合する
CONCAT関数を使うことで、文字列を結合することができます。
例えば、下記のように使うことができます。
SELECT CONCAT(name, 'さん') FROM users;
users
テーブルには下記のように、データが入っています。
mysql> select * from users;
+----+---------+------+------------+
| id | name | age | birthday |
+----+---------+------+------------+
| 1 | yasuaki | 34 | 1989-02-06 |
| 2 | taro | 25 | 1998-01-01 |
| 3 | jiro | 23 | 2000-01-01 |
+----+---------+------+------------+
3 rows in set (0.00 sec)
このusers
テーブルのname
カラムと、文字列を結合させて表示させます。
SQLを実行すると、下記のようになりました。
+------------------------+
| CONCAT(name, 'さん') |
+------------------------+
| yasuakiさん |
| taroさん |
| jiroさん |
+------------------------+
3 rows in set (0.00 sec)
CONCAT関数に渡した、nameカラムの文字列と、文字列の「さん
」を結合した値が返ってきました。
CONCAT関数には複数の文字列を渡したり、カラムを指定することができます。
数値のカラムも指定可能です。
年齢(age)を指定して、下記のように返してみました。
mysql> SELECT CONCAT(name, 'さんは', age, '歳です。') FROM users;
+------------------------------------------------+
| CONCAT(name, 'さんは', age, '歳です。') |
+------------------------------------------------+
| yasuakiさんは34歳です。 |
| taroさんは25歳です。 |
| jiroさんは23歳です。 |
+------------------------------------------------+
3 rows in set (0.00 sec)
2つのカラムと、2つの文字列を結合して、それぞれの名前と年齢を表示することができました。
CONCAT_WS関数で文字列を結合する
CONCAT_WS関数はCONCAT関数と同じように動作しますが、こちらの関数では区切り文字をつけることができます。
例えば、下記のように使うことができます。
SELECT CONCAT_WS(',', 'apple', 'banana', 'grape');
CONCAT_WS関数は第1引数に区切り文字を指定します。
その後に結合したい文字列を並べます。
今回は文字列を直接書きましたが、テーブルのカラムでも良いです。
第1引数のカンマ「,
」を区切り文字として、その後の値が結合されます。
結果は、下記のようになります。
mysql> SELECT CONCAT_WS(',', 'apple', 'banana', 'grape');
+--------------------------------------------+
| CONCAT_WS(',', 'apple', 'banana', 'grape') |
+--------------------------------------------+
| apple,banana,grape |
+--------------------------------------------+
1 row in set (0.00 sec)
「apple,banana,grape
」カンマで区切られて、結合されたことが確認できました。
MySQLで文字列を結合する方法まとめ
今回はMySQLで文字列を結合する方法について書きました。
記事の内容をまとめると、下記のようになります。
・CONCAT関数には、結合したい文字列やカラムを指定して結合した。
・CONCAT_WS関数を使うと、区切り文字を指定して、文字列を結合できた。
・CONCAT_WS関数は、第1引数が区切り文字で、その後に結合したい値を並べた。
コメント