Поделиться через


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)