Aracılığıyla paylaş


(Transact-SQL) BIRLEŞIM

Ilk nonnull ifade bağımsız değişkenlerini arasında verir.

Topic link iconTransact-SQL sözdizimi kuralları

COALESCE ( expression [ ,...n ] ) 

Bağımsız değişkenler

  • expression
    Iş bir ifade herhangi bir tür.

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)