CONCAT (Transact-SQL)

適用対象:yesSQL Server (サポートされているすべてのバージョン) Yes Azure SQL Database Yes azure SQL Managed Instance yes azure Synapse analytics yes analytics Platform System (PDW)

この関数は、連結の結果、またはエンド ツー エンドの方法で 2 つ以上の文字列値の結合の結果の文字列を返します。 (連結時に区切り値を追加するには、「CONCAT_WS」をご覧ください。)

Topic link iconTransact-SQL 構文表記規則

構文

CONCAT ( string_value1, string_value2 [, string_valueN ] )  

Note

SQL Server 2014 以前の Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。

引数

string_value
他の値に連結する文字列値です。 関数には CONCAT 、少なくとも2つの CONCAT 引数が必要で、かつ 254 string_value の引数は必要ありません。

戻り値の型

string_value
長さと型を入力に依存する文字列値。

解説

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

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

入力の種類 出力型と長さ
1.次の任意の引数

SQL-CLR システム型

SQL CLR UDT

or

nvarchar(max)
nvarchar(max)
2.それ以外の場合、次の型の任意の引数

varbinary(max)

or

varchar(max)
varchar(max) 。ただし、いずれかのパラメーターが任意の長さの nvarchar である場合を除きます。 この場合、は CONCATCONCAT型の結果を返します。
3.それ以外の場合、最大 4,000 文字の nvarchar 型の任意の引数

( nvarchar( = 4000))
nvarchar( = 4000)
4.その他のすべての場合 1つのパラメーターが任意の長さの nvarchar である場合を除き、 varchar( = 8000) (最大で8000文字のvarchar )。 この場合、は CONCATCONCAT型の結果を返します。

が長さ < = 4000 文字のCONCAT入力引数、または長さ < = 8000 文字の<入力引数を受け取ると CONCAT 、暗黙的な変換は結果の長さに影響を与える可能性があります。 他のデータ型は、暗黙的に文字列に変換された場合は異なる長さになります。 たとえば、int (14) の文字列の長さは 12 ですが、float の長さは 32 です。 そのため、2 つの整数の連結は、24 以上の長さを持つ結果を返します。

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

CONCAT 関数は、バージョン SQL Server 2012 (2.x) 以降のリンクサーバーでリモートで実行できます。 古いバージョンのリンク サーバーでは、リンク サーバーが非連結された値を返した後で、CONCAT 操作がローカルに実行されます。

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)  

こちらもご覧ください

CONCAT_WS (Transact-SQL)
FORMATMESSAGE (Transact-SQL)
QUOTENAME (Transact-SQL)
REPLACE (Transact-SQL)
REVERSE (Transact-SQL)
STRING_AGG (Transact-SQL)
STRING_ESCAPE (Transact-SQL)
STUFF (Transact-SQL)
TRANSLATE (Transact-SQL)
文字列関数 (Transact-SQL)