文字列連結の使い方
文字列を連結したい場合、「||」演算子を使うか「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!!!
コメント