MySQLでダブルパイプを使用して文字連結をする方法 †MySQLでダブルパイプ(||)を使用して文字連結をする方法を以下に記します。 関連資料・関連記事 †concatと同じ操作をダブルパイプ(||)で実現する †以下のテーブルを作成し、データをINSERTしました。 mysql> create table t1 (c1 varchar(10), c2 varchar(10), c3 varchar(10)); Query OK, 0 rows affected (0.05 sec) mysql> insert into t1 values('abc', 'def', 'ghi'),('jkl','mno','pqr'); Query OK, 2 rows affected (0.04 sec) Records: 2 Duplicates: 0 Warnings: 0 mysql> select * from t1; +------+------+------+ | c1 | c2 | c3 | +------+------+------+ | abc | def | ghi | | jkl | mno | pqr | +------+------+------+ 2 rows in set (0.00 sec) concatを使ってみる †concatで文字列の連結ができます。 mysql> select concat(c1,c2) from t1; +---------------+ | concat(c1,c2) | +---------------+ | abcdef | | jklmno | +---------------+ 2 rows in set (0.00 sec) mysql> select concat(c1,c2,c3) from t1; +------------------+ | concat(c1,c2,c3) | +------------------+ | abcdefghi | | jklmnopqr | +------------------+ 2 rows in set (0.00 sec) ダブルパイプ(||)を使用する †何も設定せず、ダブルパイプを使うと以下のような動作になり、意図した結果が出力されませんでした。 mysql> select c1||c2||c3 from t1; +------------+ | c1||c2||c3 | +------------+ | 0 | | 0 | +------------+ 2 rows in set (0.00 sec) ダブルパイプを使用するには、以下のSQLを実行します。 set @@session.sql_mode='PIPES_AS_CONCAT'; 実際に上記のsetを実行後、ダブルパイプを使った出力を以下に記します。 mysql> set @@session.sql_mode='PIPES_AS_CONCAT'; Query OK, 0 rows affected (0.00 sec) mysql> select c1||c2||c3 from t1; +------------+ | c1||c2||c3 | +------------+ | abcdefghi | | jklmnopqr | +------------+ 2 rows in set (0.00 sec) 以上、MySQLでダブルパイプを使う方法でした。 |