Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Применимо к:SQL Server
База данных Azure SQL
Управляемый экземпляр Azure SQL
Azure Synapse Analytics
Система платформы аналитики (PDW)
Конечная точка SQL аналитики в Microsoft Fabric
Хранилище в Microsoft Fabric
База данных SQL в Microsoft Fabric
Оператор в строковом выражении, объединяющий две или более символьных или двоичных строки, два или более столбцов или несколько строк и имен столбцов в одно выражение (строковый оператор). Например, SELECT 'book'+'case'; возвращает bookcase.
Соглашения о синтаксисе Transact-SQL
Syntax
expression + expression
Arguments
expression
Любое допустимое выражение любого из типов данных в категории символьного и двоичного типа данных, за исключением изображений, ntext или текстовых типов данных. Оба выражения должны иметь одинаковый тип данных, или одно из выражений должно допускать неявное преобразование к типу данных другого выражения.
Типы возвращаемых данных
Возвращает тип данных аргумента с самым высоким приоритетом. Дополнительные сведения см. в разделе "Приоритет типа данных".
Remarks
Если результат объединения строк превышает предел в 8 000 байт, то он усекается. Однако если хотя бы одна из строк сцеплена является большим типом значения, усечение не происходит.
Строки и символы нулевой длины
Оператор + объединения строк работает по-разному, если он работает с пустой строкой нулевой длины, чем при работе с NULLнеизвестными значениями. Символьная строка символа нулевой длины может быть указана в виде двух одинарных кавычек без каких-либо символов между ними. Двоичная строка нулевой длины может быть указана без 0x каких-либо байтовых значений, указанных в шестнадцатеричной константе. При сцеплении строки нулевой длины всегда сцепляются две указанные строки.
Объединение значений NULL
При работе со строками со NULL значением результат объединения зависит от параметров сеанса. Как и при арифметических операциях, выполняемых для NULL значений, при NULL добавлении значения к известному значению результат обычно является неизвестным значением, операция объединения строк, выполняемая со NULL значением, также должна привести к результату NULL .
Однако можно изменить данное поведение, поменяв значение CONCAT_NULL_YIELDS_NULL для текущего сеанса. Дополнительные сведения см. в описании SET CONCAT_NULL_YIELDS_NULL.
Использование CAST и CONVERT при необходимости
При сцеплении двоичных строк с любыми символами между двоичными строками необходимо использовать явное преобразование в символьные данные.
В следующих примерах показано, когда CONVERTCASTнеобходимо использовать двоичное объединение, а также когда CONVERTCASTили , не нужно использовать.
В этом примере нет или CONVERT функция не CAST требуется, так как этот пример объединяет две двоичные строки.
DECLARE @mybin1 VARBINARY(5), @mybin2 VARBINARY(5);
SET @mybin1 = 0xFF;
SET @mybin2 = 0xA5;
-- No CONVERT or CAST function is required because this example
-- concatenates two binary strings.
SELECT @mybin1 + @mybin2;
В этом примере требуется или CONVERT функция, CAST так как этот пример объединяет две двоичные строки плюс пробел.
DECLARE @mybin1 VARBINARY(5), @mybin2 VARBINARY(5);
SET @mybin1 = 0xFF;
SET @mybin2 = 0xA5;
-- A CONVERT or CAST function is required because this example
-- concatenates two binary strings plus a space.
SELECT CONVERT(VARCHAR(5), @mybin1) + ' '
+ CONVERT(VARCHAR(5), @mybin2);
-- Here is the same conversion using CAST.
SELECT CAST(@mybin1 AS VARCHAR(5)) + ' '
+ CAST(@mybin2 AS VARCHAR(5));
Examples
Примеры кода в этой статье используют базу данных образца AdventureWorks2025 или AdventureWorksDW2025, которую можно скачать с домашней страницы образцов и проектов сообщества Microsoft SQL Server и.
A. Использование объединения строк
В следующем примере создается один столбец под заголовком Name столбца из нескольких символьных столбцов с именем семьи пользователя, за которым следует запятая, одно пространство, а затем имя пользователя. Результирующий набор находится в порядке возрастания, алфавитного порядка по имени семейства, а затем по первому имени.
SELECT (LastName + ', ' + FirstName) AS Name
FROM Person.Person
ORDER BY LastName ASC, FirstName ASC;
B. Объединение числовых и датовых типов данных
В приведенном ниже примере функция CONVERT используется для объединения типов данных numeric и date.
SELECT 'The order is due on ' + CONVERT(VARCHAR(12), DueDate, 101)
FROM Sales.SalesOrderHeader
WHERE SalesOrderID = 50001;
GO
Вот результирующий набор.
------------------------------------------------
The order is due on 04/23/2007
C. Использование нескольких строкового объединения
В следующем примере объединяются несколько строк для формирования одной длинной строки для отображения имени семьи и первого инициала вице-президентов в Adventure Works Cycles. Запятая добавляется после имени семьи и периода после первого инициала.
SELECT (LastName + ',' + SPACE(1) + SUBSTRING(FirstName, 1, 1) + '.') AS Name, e.JobTitle
FROM Person.Person AS p
JOIN HumanResources.Employee AS e
ON p.BusinessEntityID = e.BusinessEntityID
WHERE e.JobTitle LIKE 'Vice%'
ORDER BY LastName ASC;
GO
Вот результирующий набор.
Name Title
------------- ---------------`
Duffy, T. Vice President of Engineering
Hamilton, J. Vice President of Production
Welcker, B. Vice President of Sales
D. Использование больших строк в объединениях
В приведенном ниже примере выполняется объединение нескольких строк в одну длинную строку, а затем предпринимается попытка вычислить длину итоговой строки. Окончательная длина результирующих наборов составляет 16 000, так как оценка выражений начинается слева, @x + @z + @yто есть => (@x + @z) + . @y В этом случае результат (@x + @z) усечен на 8000 байт, а затем @y добавляется в результирующий набор, что делает окончательную длину строки 16 000. Так как @y это строка большого типа значения, усечение не происходит.
DECLARE @x VARCHAR(8000) = REPLICATE('x', 8000)
DECLARE @y VARCHAR(max) = REPLICATE('y', 8000)
DECLARE @z VARCHAR(8000) = REPLICATE('z',8000)
SET @y = @x + @z + @y
-- The result of following select is 16000
SELECT LEN(@y) AS y
GO
Вот результирующий набор.
y
-------
16000
Примеры: Azure Synapse Analytics и система платформы аналитики (PDW)
Примеры кода в этой статье используют базу данных образца AdventureWorks2025 или AdventureWorksDW2025, которую можно скачать с домашней страницы образцов и проектов сообщества Microsoft SQL Server и.
E. Использование нескольких строкового объединения
В следующем примере объединяются несколько строк для формирования одной длинной строки для отображения имени семейства и первого инициала вице-президентов в образце базы данных. Запятая добавляется после имени семьи и периода после первого инициала.
SELECT (LastName + ', ' + SUBSTRING(FirstName, 1, 1) + '.') AS Name, Title
FROM DimEmployee
WHERE Title LIKE '%Vice Pres%'
ORDER BY LastName ASC;
Вот результирующий набор.
Name Title
------------- ---------------
Duffy, T. Vice President of Engineering
Hamilton, J. Vice President of Production
Welcker, B. Vice President of Sales
Связанный контент
- || (Объединение строк) (Transact-SQL)
- += (назначение сцепления строк) (Transact-SQL)
- Изменить базу данных (Transact-SQL)
- CAST и CONVERT (Transact-SQL)
- Преобразование типов данных (ядро СУБД)
- Типы данных (Transact-SQL)
- Выражения (Transact-SQL)
- Встроенные функции (Transact-SQL)
- Операторы (Transact-SQL)
- SELECT (Transact-SQL)
- Инструкции SET (Transact-SQL)