oracleで、文字列結合を表現するとき、
'hoge'||'foo' |
と書くのですが、my sqlで文字列結合できないかなぁーと思って調べたらあった!!
・文字列結合は concat() を使用する。via:MySQL 編14 - 文字関数、連結、空白削除、置換、切出、検索、長さ、数値
select concat(123456, 789012);
+------------------------+
| concat(123456, 789012) |
+------------------------+
| 123456789012 |
+------------------------+
select concat('123456', 789012);
+--------------------------+
| concat('123456', 789012) |
+--------------------------+
| 123456789012 |
+--------------------------+
select concat('123456', '789012');
+----------------------------+
| concat('123456', '789012') |
+----------------------------+
| 123456789012 |
+----------------------------+
select concat(key1, data1) from testm;
+---------------------+
| concat(key1, data1) |
+---------------------+
| a0011 |
| a0111 |
| b00210 |
| c003100 |
+---------------------+
というわけで、基本、concat(カラム名,カラム名)で結合してくれるみたいです。
カラム名が3つ以上になった場合、どうするんだろう??
===2008.09.05追記===
MySQLのリファレンスにないかなーと思って少し調べたら発見!!
6.3.2. 文字列関数
・CONCAT(str1,str2,...)
via:・CONCAT(str1,str2,...)
引数を連結した結果の文字列を返す。いずれかの引数が NULL のときは NULL を返す。3 つ以上の引数の指定が可能。 数値型の引数は同等の文字列形式に変換される。
mysql> SELECT CONCAT('My', 'S', 'QL');
-> 'MySQL'
mysql> SELECT CONCAT('My', NULL, 'QL');
-> NULL
mysql> SELECT CONCAT(14.3);
-> '14.3'
CONCAT_WS( 区切文字列, 文字列1, 文字列2, ・・・文字列N )
返信削除を使えば引数にNULLが含まれている場合はNULLは無視して処理されます。