CONCAT (Transact-SQL)CONCAT (Transact-SQL)

適用対象:Applies to: はいSQL ServerSQL Server (サポートされているすべてのバージョン) yesSQL ServerSQL Server (all supported versions) はいAzure SQL データベースAzure SQL DatabaseYesAzure SQL データベースAzure SQL Database はいAzure SQL Managed InstanceAzure SQL Managed InstanceYesAzure SQL Managed InstanceAzure SQL Managed Instance はいAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics はいParallel Data WarehouseParallel Data WarehouseyesParallel Data WarehouseParallel Data Warehouse適用対象:Applies to: はいSQL ServerSQL Server (サポートされているすべてのバージョン) yesSQL ServerSQL Server (all supported versions) はいAzure SQL データベースAzure SQL DatabaseYesAzure SQL データベースAzure SQL Database はいAzure SQL Managed InstanceAzure SQL Managed InstanceYesAzure SQL Managed InstanceAzure SQL Managed Instance はいAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics はいParallel Data WarehouseParallel Data WarehouseyesParallel Data WarehouseParallel Data Warehouse

この関数は、連結の結果、またはエンド ツー エンドの方法で 2 つ以上の文字列値の結合の結果の文字列を返します。This function returns a string resulting from the concatenation, or joining, of two or more string values in an end-to-end manner. (連結時に区切り値を追加するには、「CONCAT_WS」をご覧ください。)(To add a separating value during concatenation, see CONCAT_WS.)

トピック リンク アイコン Transact-SQL 構文表記規則Topic link icon Transact-SQL Syntax Conventions

構文Syntax

CONCAT ( string_value1, string_value2 [, string_valueN ] )  

注意

SQL Server 2014 以前の Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。To view Transact-SQL syntax for SQL Server 2014 and earlier, see Previous versions documentation.

引数Arguments

string_valuestring_value
他の値に連結する文字列値です。A string value to concatenate to the other values. CONCAT 関数では、2 個以上、254 個未満の string_value引数が必要です The CONCAT function requires at least two string_value arguments, and no more than 254 string_value arguments.

戻り値の型Return types

string_valuestring_value
長さと型を入力に依存する文字列値。A string value whose length and type depend on the input.

解説Remarks

CONCAT は、文字列引数の可変数を取得して、1 つの文字列に連結 (または結合) します。CONCAT takes a variable number of string arguments and concatenates (or joins) them into a single string. 最小で 2 つの入力値が必要です。それ以外の場合は、CONCAT でエラーが発生します。It requires a minimum of two input values; otherwise, CONCAT will raise an error. CONCAT は連結する前に、すべての引数を文字列型に暗黙的に変換します。CONCAT implicitly converts all arguments to string types before concatenation. CONCAT は null 値を空の文字列に暗黙的に変換します。CONCAT implicitly converts null values to empty strings. CONCAT はすべて NULL 値の引数を受け取ると、varchar(1) 型の空の文字列を返します。If CONCAT receives arguments with all NULL values, it will return an empty string of type varchar(1). 文字列への暗黙の変換は、データ型変換の既存の規則に従います。The implicit conversion to strings follows the existing rules for data type conversions. データ型変換の詳細については、「CAST および CONVERT (Transact-SQL)」を参照してください。See CAST and CONVERT (Transact-SQL) for more information about data type conversions.

戻り値の型は、引数の種類によって異なります。The return type depends on the type of the arguments. 次の表に、マッピングを示します。This table illustrates the mapping:

入力の種類Input type 出力型と長さOutput type and length
1.次の任意の引数1. Any argument of

SQL-CLR システム型a SQL-CLR system type

SQL CLR UDTa SQL-CLR UDT

oror

nvarchar(max)
nvarchar(max)nvarchar(max)
2.それ以外の場合、次の型の任意の引数2. Otherwise, any argument of type

varbinary(max)varbinary(max)

oror

varchar(max)varchar(max)
varchar(max) 。ただし、いずれかのパラメーターが任意の長さの nvarchar である場合を除きます。varchar(max), unless one of the parameters is an nvarchar of any length. この場合、CONCATnvarchar(max) 型の結果を返します。In this case, CONCAT returns a result of type nvarchar(max).
3.それ以外の場合、最大 4,000 文字の nvarchar 型の任意の引数3. Otherwise, any argument of type nvarchar of at most 4000 characters

( nvarchar(<= 4000) )( nvarchar(<= 4000) )
nvarchar(<= 4000)nvarchar(<= 4000)
4.その他のすべての場合4. In all other cases varchar(<= 8000) (最大 8,000 文字の varchar)。ただし、いずれかのパラメーターが任意の長さの nvarchar である場合を除きます。varchar(<= 8000) (a varchar of at most 8000 characters) unless one of the parameters is an nvarchar of any length. その場合、CONCATnvarchar(max) 型の結果を返します。In that case, CONCAT returns a result of type nvarchar(max).

CONCAT が 4000 文字以下の長さの nvarchar 入力引数、または 8000 文字以下の長さの varchar 入力引数を受け取ると、暗黙的な変換が結果の長さに影響する可能性があります。When CONCAT receives nvarchar input arguments of length <= 4000 characters, or varchar input arguments of length <= 8000 characters, implicit conversions can affect the length of the result. 他のデータ型は、暗黙的に文字列に変換された場合は異なる長さになります。Other data types have different lengths when implicitly converted to strings. たとえば、int (14) の文字列の長さは 12 ですが、float の長さは 32 です。For example, an int (14) has a string length of 12, while a float has a length of 32. そのため、2 つの整数の連結は、24 以上の長さを持つ結果を返します。Therefore, a concatenation of two integers returns a result with a length of no less than 24.

入力引数がサポートされるラージ オブジェクト (LOB) の型ではない場合、戻り値の型に関係なく、戻り値の型は長さ 8000 文字に切り詰められます。If none of the input arguments has a supported large object (LOB) type, then the return type truncates to 8000 characters in length, regardless of the return type. この切り捨てによりスペースが保持され、効率的なプラン生成をサポートします。This truncation preserves space and supports plan generation efficiency.

CONCAT 関数は、バージョン SQL Server 2012 (11.x)SQL Server 2012 (11.x) 以降のリンク サーバーでリモートで実行することができます。The CONCAT function can be executed remotely on a linked server of version SQL Server 2012 (11.x)SQL Server 2012 (11.x) and above. 古いバージョンのリンク サーバーでは、リンク サーバーが非連結された値を返した後で、CONCAT 操作がローカルに実行されます。For older linked servers, the CONCAT operation will happen locally, after the linked server returns the non-concatenated values.

Examples

A.A. CONCAT を使用するUsing CONCAT

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

結果セットは次のようになります。Here is the result set.

Result  
-------------------------  
Happy Birthday 11/25  
  
(1 row(s) affected)  

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

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;  

結果セットは次のようになります。Here is the result set.

Result  
------------------  
NameLastname  
  
(1 row(s) affected)  

関連項目See also

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