このエントリーをはてなブックマークに追加


MySQLでダブルパイプを使用して文字連結をする方法

MySQLでダブルパイプ(||)を使用して文字連結をする方法を以下に記します。
使用したOSは、CentOS6, MySQLのバージョンは5.1.61になります。

関連資料・関連記事

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でダブルパイプを使う方法でした。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-03-20 (金) 22:08:00