Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Azure Synapse Analytics
Analiz Platformu Sistemi (PDW)
Microsoft Fabric'teki SQL analiz uç noktası
Microsoft Fabric'teki ambar
Microsoft Fabric'teki SQL veritabanı
İki veya daha fazla karakter veya ikili dize, sütun ya da dize ve sütun adlarının birleşimini tek bir ifadede (dize işleci) bir araya getiren bir dize ifadesindeki işleç. Örneğin SELECT 'book'+'case'; , döndürür bookcase.
Transact-SQL söz dizimi kuralları
Syntax
expression + expression
Arguments
expression
Resim, ntext veya metin veri türleri dışında karakter ve ikili veri türü kategorisindeki veri türlerinden herhangi birinin geçerli ifadesi. her iki ifade de aynı veri türünde olmalıdır veya bir ifade örtük olarak diğer ifadenin veri türüne dönüştürülebilmelidir.
Dönüş türleri
En yüksek önceliğe sahip bağımsız değişkenin veri türünü döndürür. Daha fazla bilgi için bkz. Veri türü önceliği.
Remarks
Dizelerin birleştirilme sonucu 8.000 bayt sınırını aşarsa, sonuç kesilir. Ancak, birleştirilmiş dizelerden en az biri büyük bir değer türüyse, kesme gerçekleşmez.
Sıfır uzunluklu dizeler ve karakterler
Dize + birleştirme işleci boş, sıfır uzunluklu bir dizeyle çalıştığında, ile veya bilinmeyen değerlerle NULLçalıştığından farklı davranır. Sıfır uzunluklu bir karakter dizesi, tırnak işaretleri içinde herhangi bir karakter olmadan iki tek tırnak işareti olarak belirtilebilir. Sıfır uzunluklu ikili dize, onaltılık sabitte belirtilen bayt değerleri olmadan 0x olarak belirtilebilir. Sıfır uzunluklu bir dizeyi birleştirmek her zaman belirtilen iki dizeyi birleştirir.
NULL değerleri birleştirme
Değer NULL içeren dizelerle çalışırken, birleştirmenin sonucu oturum ayarlarına bağlıdır. Değerler üzerinde NULL gerçekleştirilen aritmetik işlemlerde olduğu gibi, bilinen bir değere bir NULL değer eklendiğinde sonuç genellikle bilinmeyen bir değerdir, bir NULL değerle gerçekleştirilen dize birleştirme işlemi de sonuç NULL üretmelidir.
Ancak, geçerli oturum için ayarını CONCAT_NULL_YIELDS_NULL değiştirerek bu davranışı değiştirebilirsiniz. Daha fazla bilgi için bkz. SET CONCAT_NULL_YIELDS_NULL.
Gerektiğinde CAST ve CONVERT kullanımı
İkili dizeleri ve ikili dizeler arasındaki karakterleri birleştirirken karakter verilerine açık dönüştürme kullanılmalıdır.
Aşağıdaki örneklerde , veya CONVERTCASTikili birleştirme ile kullanılması gerektiği ve CONVERTveya CASTkullanılması gerekmediğinde gösterilmektedir.
Bu örnekte, bu örnek iki ikili dizeyi birleştirdiğinden CONVERT veya CAST işlevi gerekmez.
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;
Bu örnekte bir CONVERT veya CAST işlevi gereklidir çünkü bu örnek iki ikili dizeyi ve bir alanı birleştirir.
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
Bu makaledeki kod örnekleri, AdventureWorks2025 giriş sayfasından indirebileceğiniz AdventureWorksDW2025 veya örnek veritabanını kullanır.
A. Dize birleştirmeyi kullanma
Aşağıdaki örnek, birden çok karakter sütunundan sütun başlığı Name altında tek bir sütun oluşturur ve ardından kişinin aile adı, ardından virgül, tek bir boşluk ve ardından kişinin adı gösterilir. Sonuç kümesi, aile adına göre artan, alfabetik sırada ve ardından adla gösterilir.
SELECT (LastName + ', ' + FirstName) AS Name
FROM Person.Person
ORDER BY LastName ASC, FirstName ASC;
B. Sayısal ve tarih veri türlerini birleştirme
Aşağıdaki örnekte CONVERT işlevi, sayısal ve tarih veri türlerini birleştirmek için kullanılır.
SELECT 'The order is due on ' + CONVERT(VARCHAR(12), DueDate, 101)
FROM Sales.SalesOrderHeader
WHERE SalesOrderID = 50001;
GO
Sonuç kümesi aşağıdadır.
------------------------------------------------
The order is due on 04/23/2007
C. Birden çok dize birleştirme kullanma
Aşağıdaki örnek, Adventure Works Cycles'ta aile adını ve başkan yardımcılarının ilk baş harflerini görüntülemek üzere bir uzun dize oluşturmak için birden çok dizeyi birleştirir. Aile adından sonra virgül ve ilk başlangıçtan sonra bir nokta eklenir.
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
Sonuç kümesi aşağıdadır.
Name Title
------------- ---------------`
Duffy, T. Vice President of Engineering
Hamilton, J. Vice President of Production
Welcker, B. Vice President of Sales
D. Birleştirmede büyük dizeler kullanma
Aşağıdaki örnek, bir uzun dize oluşturmak için birden çok dizeyi birleştirir ve son dizenin uzunluğunu hesaplamaya çalışır. sonuç kümesinin son uzunluğu 16.000'dir, çünkü ifade değerlendirmesi soldan başlar; yani, @x + @z + @y => (@x + @z) + @y. Bu durumda, (@x + @z) sonucu 8.000 bayt olarak kesilir ve sonuç kümesine @y eklenir ve bu da son dize uzunluğunu 16.000 yapar.
@y büyük bir değer türü dizesi olduğundan kesme gerçekleşmez.
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
Sonuç kümesi aşağıdadır.
y
-------
16000
Örnekler: Azure Synapse Analytics ve Analytics Platform Sistemi (PDW)
Bu makaledeki kod örnekleri, AdventureWorks2025 giriş sayfasından indirebileceğiniz AdventureWorksDW2025 veya örnek veritabanını kullanır.
E. Birden çok dize birleştirme kullanma
Aşağıdaki örnek, örnek bir veritabanında aile adını ve başkan yardımcılarının ilk adını görüntülemek için bir uzun dize oluşturmak üzere birden çok dizeyi birleştirir. Aile adından sonra virgül ve ilk başlangıçtan sonra bir nokta eklenir.
SELECT (LastName + ', ' + SUBSTRING(FirstName, 1, 1) + '.') AS Name, Title
FROM DimEmployee
WHERE Title LIKE '%Vice Pres%'
ORDER BY LastName ASC;
Sonuç kümesi aşağıdadır.
Name Title
------------- ---------------
Duffy, T. Vice President of Engineering
Hamilton, J. Vice President of Production
Welcker, B. Vice President of Sales
İlgili içerik
- || (Dize birleştirme) (Transact-SQL)
- += (Dize Birleştirme Ataması) (Transact-SQL)
- VERİ TABANINI DEĞİŞTİR (Transact-SQL)
- CAST ve CONVERT (Transact-SQL)
- Veri türü dönüştürme (Veritabanı Altyapısı)
- Veri türleri (Transact-SQL)
- İfadeler (Transact-SQL)
- Yerleşik İşlevler (Transact-SQL)
- İşleçler (Transact-SQL)
- SEÇ (Transact-SQL)
- SET Deyimleri (Transact-SQL)