CONCAT (Transact-SQL)

2 つ以上の文字列値を連結した結果の文字列を返します。

トピック リンク アイコン Transact-SQL 構文表記規則

構文

CONCAT ( string_value1, string_value2 [, string_valueN ] )

引数

  • string_value
    他の値に連結する文字列値です。

戻り値の型

入力に依存する文字列、長さ、および型です。

説明

CONCAT は、文字列引数の可変数を取得して、1 つの文字列に連結します。 最小で 2 つの入力値が必要です。それ以外の場合は、エラーが発生します。 すべての引数は、暗黙的に文字列型に変換され、連結されます。 Null 値は暗黙的に空の文字列に変換されます。 すべての引数が NULL の場合、varchar(1) 型の空の文字列が返されます。 文字列への暗黙の変換は、データ型変換の既存の規則に従います。 データ型の変換の詳細については、「CAST および CONVERT (Transact-SQL)」を参照してください。

戻り値の型は、引数の種類によって異なります。 次の表に、マッピングを示します。

入力型

出力型と長さ

引数が SQL CLR システム型、SQL CLR UDT、または nvarchar(max) の場合

nvarchar(max)

それ以外の場合、引数が varbinary(max) または varchar(max) の場合

varchar(max)。ただし、いずれかのパラメーターが任意の長さの nvarchar である場合は除きます。 この場合、結果は nvarchar (max) です。

それ以外の場合、引数が nvarchar(<= 4000) の場合

nvarchar(<= 4000)

それ以外の他のすべての場合

varchar(<= 8000)。ただし、いずれかのパラメーターが任意の長さの nvarchar である場合を除きます。 この場合、結果は nvarchar (max) です。

引数が nvarchar では <= 4000 の場合、または varchar では <= 8000 の場合、暗黙的な変換は結果の長さに影響を与えます。 他のデータ型は、暗黙的に文字列に変換された場合は異なる長さになります。 たとえば、int (14) の文字列の長さは 12 ですが、float の長さは 32 です。 このように 2 つの整数を連結した結果としての長さは少なくとも 24 です。

入力引数がサポートされるラージ オブジェクト (LOB) の型ではない場合、戻り値の型に関係なく、戻り値の型は長さ 8000 に切り詰められます。 この切り捨てではスペースが保持され、効率的なプラン生成をサポートします。

この関数は、SQL Server 2012 以上のサーバーに対してリモート処理が可能です。 SQL Server 2012 より前のバージョンをインストールしているサーバーには、リモート処理が行われません。

使用例

A. CONCAT を使用する

SELECT CONCAT ( 'Happy ', 'Birthday ', 11, '/', '25' ) AS Result;

以下に結果セットを示します。

Result
-------------------------
Happy Birthday 11/25

(1 row(s) affected)

B. NULL 値を持つ CONCAT を使用する

CREATE TABLE #temp (
    emp_name nvarchar(200) NOT NULL,
    emp_middlename nvarchar(200) NULL,
    emp_lastname nvarchar(200) NOT NULL
);
INSERT INTO #temp VALUES( 'Name', NULL, 'Lastname' );
SELECT CONCAT( emp_name, emp_middlename, emp_lastname ) AS Result
FROM #temp;

以下に結果セットを示します。

Result
------------------
NameLastname

(1 row(s) affected)