Aracılığıyla paylaş


+ (Dize birleştirme) (Transact-SQL)

Bir işleç dize ifadedeki iki veya daha çok karakter veya ikili dize, sütun veya dizeler ve sütun adlarının birleşimi içine bir ifade (dize işleci) birleştirir.

Topic link iconTransact-SQL sözdizimi kuralları

expression + expression

Bağımsız değişkenler

  • expression
    Herhangi bir geçerli mi ifade herhangi bir veri türü karakter ve ikili veri türü kategori dışında image, ntext, veya text veri türleri. Her iki ifade aynı veri türünde olmalı veya bir ifade başka bir ifade veri türüne örtülü olarak dönüştürülmesi çalıştırabilmesi gerekir.

    Açık dönüştürme karakter verisi için ikili dize ve herhangi bir karakter arasında ikili dizeleri bitiştirmek olduğunda kullanılmalıdır.Aşağıdaki örnek, CONVERT veya CAST, ikili birleştirme ile kullanılması gerektiğini ve, CONVERT veya CAST, kullanılacak yok gösterir.

    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))
    

Sonuç türleri

Bağımsız değişkenin veri türü, önceliği en yüksek olan döndürür.Daha fazla bilgi için bkz:Veri türü önceliği (Transact-SQL).

Remarks

+ Ne zaman ne zaman NULL ya da bilinmeyen değerler ile çalıştığını daha boş, sıfır uzunluklu bir dize ile çalışır (string bitiştirme) işleç farklı davranışlar gösterir.Sıfır uzunluklu karakter dize iki tek bir tırnak işaretleri olmadan tırnak işaretleri içindeki herhangi bir karakter olarak belirtilebilir.Sıfır uzunluklu bir ikili dize 0 x onaltılık sabitinde belirtilen her bayt değeri olmadan belirtilebilir.Sıfır uzunluklu bir dize her zaman bitiştirme iki belirtilen dizeyi birleştirir.Boş (null) değer dizelerle çalışırken, birleştirme sonucu oturum ayarlarını bağlıdır.Yalnızca boş değerler üzerinde gerçekleştirilen aritmetik işlemleri gibi bir Bilinen değer boş bir değer eklendiğinde sonucu genellikle bilinmeyen bir değer, bir null değeri ile gerçekleştirilen bir dize birleştirme işlemi de bir boş sonuç oluşturmak.Ancak, bu davranış, geçerli oturum için CONCAT_NULL_YIELDS_NULL ayarını değiştirerek değiştirebilirsiniz.Daha fazla bilgi için bkz:küme CONCAT_NULL_YIELDS_NULL (Transact-SQL).

Birleştirme dizelerinin sonucu 8.000 bayt sınırını aşarsa, sonuç yuvarlanır.Ancak, en az bir birleştirilmiş dizeleri büyük bir değer türü, kesme oluşmaz.

Örnekler

C.Dize birleştirme kullanma

Aşağıdaki örnek, tek bir sütun için sütun başlığının altında oluşturur. Name birden çok karakter sütunlarından, virgül, tek bir boşluk ve ilgili kişi adı tarafından izlenen bir ilgili kişinin soyadını ile. Soyadı ve sonra ilk ada göre artan, alfabetik sırada sonuç kümesidir.

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

b.Birleştirme ve sayısal, tarih veri türleri

Aşağıdaki örnek, art arda bağlamak için CONVERT işlev kullanır. numeric ve date veri türleri.

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.Birden çok dize birleştirme kullanma

Aşağıdaki örnek, soyadı ve ilk ilk tam presidents altında görüntülemek için uzun bir dizeyi oluşturmak için birden çok dizesini birleştirir Adventure Works Cycles. Virgül, soyadı ve ilk ilk sonra bir süre sonra eklenir.

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)