CONCAT (Transact-SQL)

Применимо к: даSQL Server (все поддерживаемые версии) ДаБаза данных SQL Azure ДаУправляемый экземпляр SQL Azure даAzure Synapse Analytics даПараллельное хранилище данных

Эта функция возвращает строку, возникающую в результате объединения двух или более строковых значений в сквозной форме. (Сведения о добавлении разделяющего значения во время объединения см. в описании функции CONCAT_WS.)

Значок ссылки на раздел Синтаксические обозначения в Transact-SQL

Синтаксис

CONCAT ( string_value1, string_value2 [, string_valueN ] )  

Примечание

Ссылки на описание синтаксиса Transact-SQL для SQL Server 2014 и более ранних версий, см. в статье Документация по предыдущим версиям.

Аргументы

string_value
Строковое значение для объединения с другими значениями. Функции CONCAT требуется по крайней мере два аргумента string_value и не более 254 аргументов string_value.

Типы возвращаемых данных

string_value
Строковое значение, длина и тип которого зависят от входных данных.

Комментарии

CONCAT принимает переменное количество строковых аргументов и объединяет их в одну строку. Она требует не менее двух входных значений. В противном случае возникает ошибка CONCAT. Функция CONCAT неявно преобразует все аргументы в строковые типы перед объединением. CONCAT неявно преобразует значения NULL в пустые строки. Если CONCAT получает аргументы со всеми значениями NULL, она возвращает пустую строку типа varchar(1). Неявное преобразование в строки выполняется по существующим правилам преобразования типов данных. Дополнительные сведения о преобразовании типов данных см. в статье Функции CAST и CONVERT (Transact-SQL).

Тип возвращаемого значения зависит от типа аргументов. Описанные выше основные понятия проиллюстрированы в этой таблице.

Тип входных данных Выходной тип и длина
1. Любой аргумент

системного типа SQL CLR

пользовательского типа SQL CLR

или

nvarchar(max)
nvarchar(max)
2. В противном случае любой аргумент типа

varbinary(max)

или

varchar(max)
varchar(max) , если только один из параметров не представляет собой значение nvarchar любой длины. В этом случае CONCAT возвращает результат типа nvarchar(max).
3. В противном случае любой аргумент типа nvarchar не более 4000 символов.

( nvarchar(<= 4000) )
nvarchar(<= 4000)
4. Во всех остальных случаях varchar(<= 8000) (тип varchar длиной не более 8000 символов), если только один из параметров не представляет собой значение nvarchar любой длины. В этом случае CONCAT возвращает результат типа nvarchar(max).

Когда CONCAT получает входные аргументы nvarchar длиной<= 4000 символов или входные аргументы varchar длиной <= 8000 символов, неявное преобразование может повлиять на длину результата. Другие типы данных имеют разные длины, когда они неявно преобразуются в строки. Например, значение int (14) имеет длину строки 12, а длина значения float составляет 32. Таким образом, объединение двух целых чисел возвращает результат с длиной не менее 24.

Если ни один из входных аргументов не принадлежит к поддерживаемому типу большого объекта (LOB), то длина возвращаемого типа усекается до 8000 символов, независимо от того, какой это тип. Это усечение позволяет сохранить пространство и обеспечить эффективность формирования плана.

Функция CONCAT может выполняться удаленно на связанном сервере версии SQL Server 2012 (11.x) или более поздней. Если связанный сервер имеет более раннюю версию, операция CONCAT выполняется локально после возврата не сцепленных значений со связанного сервера.

Примеры

A. Использование CONCAT

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

Результирующий набор:

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

Б. Использование CONCAT со значениями NULL

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)