2008/09/03

[mysql]文字列結合

oracleで、文字列結合を表現するとき、

'hoge'||'foo'

と書くのですが、my sqlで文字列結合できないかなぁーと思って調べたらあった!!

・文字列結合は concat() を使用する。

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 |
+---------------------+

via:MySQL 編14 - 文字関数、連結、空白削除、置換、切出、検索、長さ、数値

というわけで、基本、concat(カラム名,カラム名)で結合してくれるみたいです。
カラム名が3つ以上になった場合、どうするんだろう??

===2008.09.05追記===
MySQLのリファレンスにないかなーと思って少し調べたら発見!!
6.3.2. 文字列関数

・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'

via:・CONCAT(str1,str2,...)

1 件のコメント:

  1. CONCAT_WS( 区切文字列, 文字列1, 文字列2, ・・・文字列N )
    を使えば引数にNULLが含まれている場合はNULLは無視して処理されます。

    返信削除