CONCAT (Transact-SQL)
Возвращает строку, являющуюся результатом объединения двух или более строковых значений.
Синтаксические обозначения в Transact-SQL
Синтаксис
CONCAT ( string_value1, string_value2 [, string_valueN ] )
Аргументы
- string_value
Строковое значение для объединения с другими значениями.
Типы возвращаемых данных
Строка, длина и тип которой зависят от входных данных.
Замечания
CONCAT принимает переменное количество строковых аргументов и объединяет их в одну строку. Для этого требуется не менее двух входных значений. В противном случае возникает ошибка. Все аргументы неявно преобразуются в строковые типы и затем объединяются. Значения 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). |
Если аргументы имеют значение <= 4000 для nvarchar или <= 8000 для varchar, то неявное преобразование может повлиять на длину результата. Другие типы данных имеют разные длины, когда они неявно преобразуются в строки. Например, значение int (14) имеет длину строки 12, а float имеет длину 32. Таким образом, после объединения двух целых чисел формируется строка длиной не менее 24.
Если ни один из входных аргументов не принадлежит к поддерживаемому типу большого объекта (LOB), то длина возвращаемого типа усекается до 8000, независимо от того, какой это тип. Это усечение позволяет сохранить пространство и обеспечить эффективность формирования плана.
Для серверов SQL Server 2012 и выше данная функция может быть удаленной. Данная функция не может быть удаленной для серверов с версией ниже SQL Server 2012.
Примеры
А.Использование 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)