Udostępnij za pośrednictwem


+ (łączenie ciągów) (Transact-SQL)

operator w ciągwyrażenie , które łączy dwa lub więcej ciągów znaków lub binarny, kolumny lub kombinacji ciągi znaków i nazw kolumna w jedno wyrażenie ( ciągoperator).

Ikona łącza do tematuJęzyka Transact-SQL składni konwencje

Składnia

expression + expression

Argumenty

  • expression
    Wszelkie obowiązuje wyrażenie dowolnego jednego z danych typy znaków i kategorię typu danych binarnych, z wyjątkiem image, ntext, lub text typów danych.Oba wyrażenia musi być tego samego typu danych lub jedno wyrażenie musi być w stanie są niejawnie konwertowane na typ danych inne wyrażenie.

    Konwersja jawna do danych znakowych muszą być używane podczas łączenia ciągów binarnych i dowolnych znaków między ciągów binarnych.Następujący przykład ilustruje kiedy CONVERT lub CAST, musi być używana z binarne łączenie i kiedy CONVERT lub CAST, nie musi być używane.

    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ów

Zwraca typ danych argumentu o najwyższym priorytecie.Aby uzyskać więcej informacji, zobacz Pierwszeństwo typu danych (Transact-SQL).

Uwagi

+ (Konkatenacji ciągów) operator różne zachowanie podczas współpracuje z pustą, o zerowej długości ciąg niż gdy współpracuje z NULL lub wartości nieznane.ciąg znaków o zerowej długości można określić jako dwa pojedyncze cudzysłowy bez żadnych znaków wewnątrz cudzysłowów.Binarny o zerowej długości ciąg może być określona jako 0 x bez żadnych wartości bajtu, określone w szesnastkowym stała.Konkatenowanie ciąg o zerowej długości zawsze łączy dwa ciągi określone.Podczas pracy z ciągami o wartości null , wynik łączenie zależy od ustawienia sesja .Podobnie jak operacji arytmetycznych, które są wykonywane na wartości null wartość null jest dodawana do znanej wartości wynik jest zazwyczaj Nieznana wartość, operacjiłączenie ciąg, która jest wykonywane z wartością null również powinna dawać wynik o null . Można jednak zmienić to zachowanie, zmieniając ustawienie CONCAT_NULL_YIELDS_NULL dla bieżącej sesja.Aby uzyskać więcej informacji, zobacz SET CONCAT_NULL_YIELDS_NULL (Transact-SQL).

Jeśli wynik łączenie ciągów znaków przekracza limit 8000 bajtów, wynik zostanie obcięta.Jednakże jeżeli co najmniej jeden z ciągów tak łączone jest typu dużą wartość obcinania nie występuje.

Przykłady

A.Za pomocąłączenie ciąg

Poniższy przykład tworzy pojedynczą kolumna pod nagłówkiem kolumna Name z wielu znaków kolumny Nazwisko osoby następuje przecinek, pojedynczą spację, a następnie imię osoby.zestaw wyników jest w kolejności rosnącej, alfabetycznym według nazwiska, a następnie według imienia.

USE AdventureWorks2008R2;
GO
SELECT (LastName + ', ' + FirstName) AS Name
FROM Person.Person
ORDER BY LastName ASC, FirstName ASC;

B.Łączenie typów danych liczbowych i data

W poniższym przykładzie użyto CONVERT funkcja łączenia numeric i date typów danych.

USE AdventureWorks2008R2;
GO
SELECT 'The order is due on ' + CONVERT(varchar(12), DueDate, 101)
FROM Sales.SalesOrderHeader
WHERE SalesOrderID = 50001;
GO

Oto zestaw wyników.

------------------------------------------------

The order is due on 04/23/2007

(1 row(s) affected)

C.Za pomocą wielu ciąg łączenie

Poniższy przykład łączy wiele ciągów tworzą jeden długi ciąg do wyświetlania nazwiska i pierwszy początkowy prezesi odwrotnie w Adventure Works Cycles.Przecinek jest dodawany po nazwisko i okresu po pierwszym początkowy.

USE AdventureWorks2008R2;
GO
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

Oto zestaw wyników.

Name               Title

-------------      ---------------

Duffy, T.          Vice President of Engineering

Hamilton, J.       Vice President of Production

Welcker, B.        Vice President of Sales

(3 row(s) affected)