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

#contents
#htmlinsertpcsp(db-top.html,db-sp.html)

* 関連資料・関連記事 [#x8313fd8]
-[[PostgreSQLでカラムの文字列を連結する・ダブルパイプ>PostgreSQL/PostgreSQLでカラムの文字列を連結する・ダブルパイプ]]

* concatと同じ操作をダブルパイプ(||)で実現する [#lbaa6909]
以下のテーブルを作成し、データを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を使ってみる [#b869c3b6]
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)

**ダブルパイプ(||)を使用する [#ae07f1c9]
何も設定せず、ダブルパイプを使うと以下のような動作になり、意図した結果が出力されませんでした。
 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でダブルパイプを使う方法でした。

#htmlinsertpcsp(db-btm.html,db-sp.html)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS