+ (String Concatenation) (Transact-SQL)
Operator wyrażenia tekstowego, który łączy dwa lub więcej znaków lub ciągów binarnych, kolumna lub kombinacji ciągi i nazw kolumn w jedno wyrażenie (operator ciąg znaków).
expression + expression
Argumenty
expression
Jest ważne w każdym wyrażenie jeden z typów danych w znaków i kategorię typu danych binarnych, z wyjątkiem image, ntext, lub text typy danych. Oba wyrażenia musi być tego samego typu danych, lub jedno wyrażenie musi być w stanie można niejawnie przekonwertować na typ danych inne wyrażenia.Jawna konwersja na dane znakowe muszą być używane podczas łączenia ciągów binarnych i znaków między ciągów binarnych.Poniższy przykład pokazuje, kiedy CONVERT lub CAST, musi być używany z łączenie binarne i kiedy CONVERT lub CAST, nie musi być używany.
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 -- 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))
Typy wynik
Zwraca wartość argumentu typ danych o najwyższym priorytecie.Aby uzyskać więcej informacji zobaczData Type Precedence (Transact-SQL).
Remarks
+ (Ciąg łączenie) operator zachowuje się inaczej działa z pustego, o zerowej długości ciąg znaków niż działa o wartości NULL, lub nieznany.Ciąg znaków o zerowej długości można określić jako dwa znaki pojedynczego cudzysłowu bez żadnych znaków wewnątrz cudzysłowów.Ciąg binarny o zerowej długości można określić jako 0 x bez określonej w systemie szesnastkowym stała wartości bajtu.Zawsze konkatenację ciąg znaków o zerowej długości łączy dwa ciągi określone.Podczas pracy z ciągami o wartości null, wynik łączenie zależy od ustawień sesja.Podobnie jak operacji arytmetycznych, które są wykonywane na wartości null, gdy wartość null jest dodawany do znanej wartości zazwyczaj jest nieznana wartość, a ciąg operacji łączenie, która jest wykonywane z wartością null powinny być też wynik wartości null.Jednak to zachowanie można zmienić, zmieniając ustawienie CONCAT_NULL_YIELDS_NULL dla bieżącej sesja.Aby uzyskać więcej informacji zobaczSET CONCAT_NULL_YIELDS_NULL (Transact-SQL).
Jeśli wynik łączenie ciągów znaków przekracza limit 8000 bajtów, wynik zostanie obcięta do liczby całkowitej.Niemniej jednak jeśli co najmniej jeden z ciągów, połączenie jest typu dużą wartość, obcinania nie występuje.
Przykłady
A.Za pomocą ciąg łączenie
Poniższy przykład tworzy w jednej kolumnie pod nagłówkiem kolumna Name z wielu kolumnach znaków, z ostatnią nazwę kontaktu, a po nim przecinek, pojedynczą spację, a następnie imię kontaktu. Zestaw wyników jest w porządku rosnącym, alfabetycznym według nazwiska, a następnie według imienia.
USE AdventureWorks;
GO
SELECT (LastName + ', ' + FirstName) AS Name
FROM Person.Contact
ORDER BY LastName ASC, FirstName ASC;
B.Łączenie typów danych liczbowych i data
W poniższym przykładzie użyto funkcja konwersji, aby złączyć numeric i date typy danych.
USE AdventureWorks;
GO
SELECT 'The order is due on ' + CONVERT(varchar(12), DueDate, 101)
FROM Sales.SalesOrderHeader
WHERE SalesOrderID = 50001;
GO
Here is the result set.
------------------------------------------------
The order is due on 04/23/2003
(1 row(s) affected)
C.Za pomocą wielu Konkatenacja ciągów
W poniższym przykładzie łączy kilka ciągów tworzą jeden długi ciąg do wyświetlania nazwiska i wstępnego pierwszego z prezesi vice na Adventure Works Cycles. Przecinek jest dodawany po nazwiska i okresu po pierwszym wstępnego.
USE AdventureWorks;
GO
SELECT (LastName + ',' + SPACE(1) + SUBSTRING(FirstName, 1, 1) + '.') AS Name, e.Title
FROM Person.Contact AS c
JOIN HumanResources.Employee AS e
ON c.ContactID = e.ContactID
WHERE e.Title LIKE 'Vice%'
ORDER BY LastName ASC;
GO
Here is the result set.
Name Title
------------- ---------------
Duffy, T. Vice President of Engineering
Hamilton, J. Vice President of Production
Welcker, B. Vice President of Sales
(3 row(s) affected)
See Also