MySQLでダブルパイプ(||)を使用して文字連結をする方法を以下に記します。
使用したOSは、CentOS6, MySQLのバージョンは5.1.61になります。
以下のテーブルを作成し、データを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で文字列の連結ができます。
上記で作成したテーブルを使い使用例を以下に記します。
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でダブルパイプを使う方法でした。