連結演算子 || は、文字列とCLOBデータ型のデータを結合するために使用します。連結演算子を使用して2つの文字列を結合すると、別の文字列が得られます。
2つの文字列のデータ型がどちらも CHAR の場合、戻り値のデータ型も CHAR となり、2000文字に制限されます。
結合するいずれか一方の文字列のデータ型が VARCHAR2 の場合、戻り値のデータ型も VARCHAR2 となり、4000文字に制限されます。
連結演算子の両側のパラメータのいずれか一方が CLOB データ型の値である場合、戻り値のデータ型は一時的な CLOB となります。
OceanBaseデータベースでは、長さ0の文字列はNULL値と見なされますが、値を持つオペランドと長さ0の文字列を結合した結果は値を持つオペランドとなるため、NULL は値が NULL の文字列同士を連結した場合にのみ生成されます。NULL値を含む可能性のある式を結合する場合は、NVL関数を使用して式を直接長さ0の文字列に変換することを推奨します。
以下の例では、CHAR 型と VARCHAR2 型の列を含むテーブルを作成し、末尾にスペースを付けた値と付けない値を挿入して結合します。
obclient> CREATE TABLE tbl1 (col1 VARCHAR2(6), col2 CHAR(10), col3 VARCHAR2(10), col4 CHAR(6));
Query OK, 0 rows affected
obclient> INSERT INTO tbl1 (col1, col2, col3, col4) VALUES ('abc', 'def ', 'ghi ', 'jkl');
Query OK, 1 row affected
obclient> SELECT col1 || col2 || col3 || col4 "Concatenation" FROM tbl1;
+----------------------------+
| Concatenation |
+----------------------------+
| abcdef ghi jkl |
+----------------------------+
1 row in set