(Transact-SQL) BIRLEŞIM
Ilk nonnull ifade bağımsız değişkenlerini arasında verir.
COALESCE ( expression [ ,...n ] )
Dönüş Türleri
Veri türünü döndürür. expression veri türü en yüksek önceliğe sahip. Tüm ifadelerin nonnullable, sonuç nonnullable yazılmış.
Remarks
Tüm bağımsız değişkenler NULL, BIRLEŞIM NULL döndürüyor.
Not
Boş değerler en az bir yazılı NULL olmalıdır.
(BİRLEŞİMexpression1,... n) is equivalent to the following CASE expression:
SERVİS TALEBİ
ZAMAN (ifade1 IS NOT NULL) THEN ifade1
ZAMAN (ifade2 IS NOT NULL) THEN ifade2
...
ELSE expressionN
BİTİŞ
ISNULL ve BIRLEŞIM eşdeğer olsa bile, farklı davranır.ISNULL null parametreler ile ilgili bir ifade DEĞIL olarak kabul edilir, NULL sırasında BIRLEŞIM boş olmayan parametreleriyle ilgili ifade NULL olarak kabul edilir.Içinde SQL Server, dizine BIRLEŞIM null olmayan parametreleriyle ilgili deyimler, hesaplanan sütun aşağıdaki deyiminde PERSISTED sütun özniteliği kullanılarak kalıcı:
CREATE TABLE #CheckSumTest
(
ID int identity ,
Num int DEFAULT ( RAND() * 100 ) ,
RowCheckSum AS COALESCE( CHECKSUM( id , num ) , 0 ) PERSISTED PRIMARY KEY
);
Örnekler
Basit örneği
Aþaðýdaki örnek, BIRLEŞIM ilk sütunundan null olmayan değere sahip verileri nasıl seçtiği gösterir.
USE AdventureWorks ;
GO
SELECT Name, Class, Color, ProductNumber,
COALESCE(Class, Color, ProductNumber) AS FirstNotNull
FROM Production.Product ;
GO
Karmaşık örnek
Aşağıdaki örnekte, wages Tablo, çalışanların yıllık ücretleri hakkında bilgi taşıyan üç sütun içerir: saat ücreti, maaş ve komisyon. Ancak, bir çalışana yalnızca bir ödeme tipi alır.Tüm çalışanlar için ödenen toplam tutarı belirlemek için kullanın. COALESCE yalnızca nonnull değerini almak için bulundu hourly_wage, salary, ve commission.
SET NOCOUNT ON;
GO
USE tempdb;
IF OBJECT_ID('dbo.wages') IS NOT NULL
DROP TABLE wages;
GO
CREATE TABLE dbo.wages
(
emp_id tinyint identity,
hourly_wage decimal NULL,
salary decimal NULL,
commission decimal NULL,
num_sales tinyint NULL
);
GO
INSERT dbo.wages (hourly_wage, salary, commission, num_sales)
VALUES
(10.00, NULL, NULL, NULL),
(20.00, NULL, NULL, NULL),
(30.00, NULL, NULL, NULL),
(40.00, NULL, NULL, NULL),
(NULL, 10000.00, NULL, NULL),
(NULL, 20000.00, NULL, NULL),
(NULL, 30000.00, NULL, NULL),
(NULL, 40000.00, NULL, NULL),
(NULL, NULL, 15000, 3),
(NULL, NULL, 25000, 2),
(NULL, NULL, 20000, 6),
(NULL, NULL, 14000, 4);
GO
SET NOCOUNT OFF;
GO
SELECT CAST(COALESCE(hourly_wage * 40 * 52,
salary,
commission * num_sales) AS money) AS 'Total Salary'
FROM dbo.wages
ORDER BY 'Total Salary';
GO
Here is the result set.
Toplam maaş
------------
20800.0000
41600.0000
62400.0000
83200.0000
10000.0000
20000.0000
30000.0000
40000.0000
45000.0000
50000.0000
120000.0000
56000.0000
(12 satırları etkilenen)