Oracleでは、CONCAT()
関数は、引数に対して文字列連結を実行します。引数を連結した結果の文字列を返します。
連結とは、複数の文字列をエンドツーエンドで結合する操作です。
構文
構文は次のようになります:
CONCAT(char1, char2)
ここで、両方の引数は任意のデータ型CHAR
にすることができます 、VARCHAR2
、NCHAR
、NVARCHAR2
、CLOB
、またはNCLOB
。
例
簡単な例を次に示します。
SELECT CONCAT('Ponzi', 'Invest')
FROM DUAL;
結果:
CONCAT('PONZI','INVEST') ___________________________ PonziInvest
ヌル値
文字列をnull
と連結する 文字列を返します:
SET NULL 'null';
SELECT
CONCAT('Ponzi', null),
CONCAT(null, 'Invest')
FROM DUAL;
結果:
CONCAT('PONZI',NULL) CONCAT(NULL,'INVEST') _______________________ ________________________ Ponzi Invest
ただし、両方の引数がnull
の場合 、結果はnull
です :
SET NULL 'null';
SELECT CONCAT(null, null)
FROM DUAL;
結果:
CONCAT(NULL,NULL) ____________________ null
デフォルトでは、SQLclおよびSQL * Plusは、null
の場合は常に空白を返します。 SQL SELECT
の結果として発生します 声明。
ただし、SET NULL
は使用できます 返される別の文字列を指定します。ここでは、文字列null
を指定しました 返却する必要があります。
引数の数が正しくありません
CONCAT()
を呼び出す 引数を渡さないとエラーが返されます:
SELECT CONCAT()
FROM DUAL;
結果:
Error starting at line : 1 in command - SELECT CONCAT() FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00938: not enough arguments for function 00938. 00000 - "not enough arguments for function" *Cause: *Action:
また、間違った数の引数を渡すと、エラーが発生します:
SELECT CONCAT('Gosh', 'Dang', 'Investments')
FROM DUAL;
結果:
Error starting at line : 1 in command - SELECT CONCAT('Gosh', 'Dang', 'Investments') FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments" *Cause: *Action:
文字セットとデータ型
結果の文字列は最初の引数と同じ文字セットですが、そのデータ型は引数のデータ型によって異なります。
2つの異なるデータ型を連結する場合、Oracle Databaseは、ロスレス変換をもたらすデータ型を返します。したがって、引数の1つがLOBの場合、戻り値はLOBです。引数の1つが国別データ型である場合、戻り値は国別データ型です。
例:
-
CONCAT
(CLOB
、NCLOB
)はNCLOB
を返します -
CONCAT
(NCLOB
、NCHAR
)はNCLOB
を返します -
CONCAT
(NCLOB
、CHAR
)はNCLOB
を返します -
CONCAT
(NCHAR
、CLOB
)はNCLOB
を返します