Oracle 文字列連結の「||」連結演算子と「CONCAT」関数の使い方

スポンサーリンク
スポンサーリンク

文字列連結の使い方

文字列を連結したい場合、「||」演算子を使うか「CONCAT」関数を使います。
文字列連結用のCONCAT関数も用意されていますが、3つ以上の文字列の連結の書き方が嫌いなので、個人的には「||」演算子を使ったほうが良いと思います。\(^o^)/

「||」演算子の使い方

以下が、基本的な「||」演算子の使い方です。

SQL> SELECT 'Hello' || 'World' as 文字列連結 FROM dual;

文字列連結
--------------------
HelloWorld

3つ以上の文字列連結

3つ以上の文字列連結をする場合は、2つの文字列を連結する場合と変わりません。

SQL> SELECT 'Hello' || 'World' || '!!!' as 文字列連結 FROM dual;

文字列連結
--------------------------
HelloWorld!!!

NULLの取り扱い

文字列演算子の場合のNULLの取り扱いは無視されて文字連結されるみたいですね(´・ω・`)

SQL> SELECT 'Hello' || NULL || '!!!' as 文字列連結 FROM dual;

文字列連結
----------------
Hello!!!

「CONCAT」関数の構文

以下が、「CONCAT」関数の基本的な構文です。

CONCAT(string1, string2)
SQL> SELECT CONCAT('Hello', 'World') as 文字列連結 FROM dual;

文字列連結
--------------------
HelloWorld

3つ以上の文字列連結

「CONCAT」関数は、引数を2つしか取れません。

「CONCAT」関数で3つ以上の文字列を連結する場合は、「CONCAT」関数の中でネストして「CONCAT」関数を使うことにより文字列連結ができます。

SQL> SELECT CONCAT('Hello', CONCAT('World', '!!!')) as 文字列連結 FROM dual;

文字列連結
--------------------------
HelloWorld!!!

僕は、可読性が落ちるのでこういう書き方はあまり好きじゃないので「||」演算子を使えるなら「||」演算子を使いたいですね。

ちなみに引数を3つ以上にした場合は、「ORA-00909」が発生します。

SQL> SELECT CONCAT('Hello', 'World', '!!!') as 文字列連結 FROM dual;
SELECT CONCAT('Hello', 'World', '!!!') as 文字列連結 FROM dual
       *
行1でエラーが発生しました。:
ORA-00909: 引数の個数が無効です。

NULLの取り扱い

CONCAT関数の場合のNULLの取り扱いは無視されて文字連結されるみたいですね(´・ω・`)

SQL> SELECT CONCAT('Hello', CONCAT(NULL, '!!!')) as 文字列連結 FROM dual;

文字列連結
----------------
Hello!!!

コメント

タイトルとURLをコピーしました