CONCAT (Transact-SQL)
Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure конечной точке аналитики платформы Аналитики Azure Synapse Analytics (PDW) в Microsoft Fabric Хранилище в Microsoft Fabric
Эта функция возвращает строку, возникающую в результате объединения двух или более строковых значений в сквозной форме.
Примечание.
Чтобы добавить разделяющее значение во время объединения, используйте CONCAT_WS.
Соглашения о синтаксисе Transact-SQL
Синтаксис
CONCAT ( argument1 , argument2 [ , argumentN ] ... )
Аргументы
argument1, argument2 [ , argumentN ]
Выражение любого строкового значения. Функции CONCAT
требуется по крайней мере два аргумента и не более 254 аргументов.
Типы возвращаемых данных
Строковое значение, длина и тип которого зависят от входных данных.
Замечания
CONCAT
принимает переменное количество строковых аргументов и объединяет их в одну строку. Для этого требуется не менее двух входных значений; CONCAT
в противном случае вызывает ошибку. Функция CONCAT
неявно преобразует все аргументы в строковые типы перед объединением. CONCAT
неявно преобразует значения NULL в пустые строки. При CONCAT
получении аргументов со всеми NULL
значениями возвращается пустая строка типа varchar(1). Неявное преобразование в строки выполняется по существующим правилам преобразования типов данных. Дополнительные сведения о преобразовании типов данных см. в статье Функции CAST и CONVERT (Transact-SQL).
Тип возвращаемого значения зависит от типа аргументов. Описанные выше основные понятия проиллюстрированы в этой таблице.
Тип Ввода | Выходной тип и длина |
---|---|
1. Любой аргумент типа системы SQL-CLR, UDT 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
имеет строку длиной 2, а плавающая со значением 1234.56789
имеет строку длиной 7 (1234.57
). Таким образом, объединение этих двух значений возвращает результат с длиной не менее 9 символов.
Если ни один из входных аргументов не имеет поддерживаемого типа большого объекта (LOB), возвращаемый тип усечен до 8000 символов длиной, независимо от типа возвращаемого значения. Это усечение позволяет сохранить пространство и обеспечить эффективность формирования плана.
CONCAT
можно удаленно выполнять на связанном сервере под управлением SQL Server 2012 (11.x) и более поздних версий. Для старых связанных серверов операция будет выполняться локально, CONCAT
после того как связанный сервер возвращает несоединяемые значения.
Примеры
А. Использование CONCAT
SELECT CONCAT ('Happy ', 'Birthday ', 11, '/', '25') AS Result;
Вот результирующий набор.
Result
--------------------
Happy Birthday 11/25
B. Использование 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