SQLでの文字列結合に関する備忘録になります。
各DBMSごとに使用できる関数が異なりますが、今回はOracle向けの内容をまとめていきます。
1. Oracleでの文字列結合
Oracleで文字列を連結したい場合、「||」演算子を使うか「CONCAT」関数を使います。ただ「CONCAT」関数の場合、3つ以上の文字列を連結した書き方が少しややこしいので、個人的には「||」演算子を使うことをおすすめします。
①「||」演算子の使い方
SQL> SELECT 'Hello' || 'World' as 文字列連結 FROM dual;
SQLの実行結果は下記になります。
文字列連結
--------------------
HelloWorld
また、「||」演算子では3つ以上の文字列を連結することが可能です。
やり方は2つの文字列を連結する場合と変わりません。
SQL> SELECT 'Hello' || 'World' || '!!' as 文字列連結 FROM dual;
SQLの実行結果は下記になります。
文字列連結
--------------------------
HelloWorld!!!
② CONCAT関数の使い方
以下が「CONCAT」関数の基本的な構文になります。
CONCAT(string1,string2)
SQL> SELECT CONCAT('Hello', 'World') as 文字列連結 FROM dual;
SQLの実行結果は下記になります。
文字列連結
--------------------
HelloWorld
Oracleの「CONCAT」関数は、引数を2つしか指定することが出来ません。そのため、「CONCAT」関数で3つ以上の文字列を結合するには、以下のようにネストする必要があります。
SQL> SELECT CONCAT('Hello', CONCAT('World', '!!')) as 文字列連結 FROM dual;
SQLの実行結果は下記になります。
文字列連結
--------------------------
HelloWorld!!
ただし、上記で記載してある通り、Oracleには「||」演算子があるので、2つ以上の値の結合はこちらのほうが使い勝手がよく、コードも見やすくなります。
OracleのCONCAT関数でNULLを連結する場合、NULLは空文字列となって文字列が連結されます。
SQL> SELECT CONCAT('Hello', 'Null') as 文字列連結 FROM dual;
SQLの実行結果は下記になります。
文字列連結
--------------------------
Hello
まとめ
Oracleで文字列を結合するにはCONCAT関数や「||」演算子を使用します。
CONCAT関数は指定できる引数の数やNULLの扱いなど、DBMSによって仕様が異なります。