ヘッダーをスキップ
Oracle® Database SQL言語リファレンス
11gリリース2 (11.2)
B56299-06
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

連結演算子

連結演算子は、文字列およびCLOBデータを操作する場合に使用します。表4-3に、連結演算子を示します。

表4-3 連結演算子

演算子 用途

||


文字列およびCLOBデータを連結します。

SELECT 'Name is ' || last_name
  FROM employees
  ORDER BY last_name;

2つの文字列を連結した結果は別の文字列になります。両方の文字列がCHARデータ型の場合、結果はCHARデータ型の文字列になり、その最大文字数は2000です。どちらかの文字列がVARCHAR2データ型の場合、結果はVARCHAR2データ型の文字列になり、最大文字数は4000です。どちらかの引数がCLOBデータ型の場合、結果は、一時CLOBになります。データ型が文字列型かCLOB型かにかかわらず、後続空白は連結後も文字列に残ります。

多くのプラットフォームでは、連結演算子は、表4-3に示すとおり2本の実線垂直バーで表されます。ただし、IBM社のプラットフォームの中には、この演算子として破線垂直バーを使用するものもあります。異なるキャラクタ・セットを持つシステム間(たとえばASCIIとEBCDIC間)でSQLスクリプト・ファイルを移動する場合、垂直バーが、移動先のOracle Database環境で必要な垂直バーに変換されない場合があります。オペレーティング・システムまたはネットワーク・ユーティリティによる変換の制御が困難または不可能である場合に備えて、Oracleでは、垂直バー演算子にかわるものとしてCONCAT文字ファンクションが提供されています。異なるキャラクタ・セットを持つ環境間でアプリケーションを移動する場合は、この文字ファンクションを使用することをお薦めします。

Oracleは、長さが0(ゼロ)の文字列をNULLとして処理しますが、長さが0(ゼロ)の文字列を別のオペランドと連結すると、その結果は常にもう一方のオペランドになります。結果がNULLになるのは、2つのNULL文字列を連結したときのみです。ただし、この処理はOracle Databaseの今後のバージョンでも継続されるとはかぎりません。NULLになる可能性がある式を連結する場合は、NVLファンクションを使用して、その式を長さが0(ゼロ)の文字列に明示的に変換してください。


関連項目:

  • CHARデータ型とVARCHAR2データ型の違いの詳細は、「文字データ型」を参照してください。

  • CONCATファンクションおよびNVLファンクションを参照してください。

  • CLOBの詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。


連結の例 次の例では、CHAR列およびVARCHAR2列を持つ表を作成し、後続空白のある値とない値を挿入してから、これらの値を選択し、連結します。なお、CHAR列およびVARCHAR2列では、ともに後続空白が保存されます。

CREATE TABLE tab1 (col1 VARCHAR2(6), col2 CHAR(6),
                   col3 VARCHAR2(6), col4 CHAR(6));

INSERT INTO tab1 (col1,  col2,     col3,     col4)
          VALUES ('abc', 'def   ', 'ghi   ', 'jkl');

SELECT col1 || col2 || col3 || col4 "Concatenation"
  FROM tab1;

Concatenation
------------------------
abcdef   ghi   jkl