Post

10 - COALESCE

10: COALESCE

10.1: Virgülle Ayrılmış Dize Oluşturmak için COALESCE Kullanma

Aşağıda gösterildiği gibi COALESCE yi kullanarak birden çok satırdan virgülle ayrılmış bir dize elde edebiliriz.

Tablo değişkeni kullanıldığı için sorgunun tamamını bir kere çalıştırmamız gerekiyor. Anlaşılmasını kolaylaştırmak için BEGIN ve END bloğu ekledim.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
BEGIN

  DECLARE @Table TABLE (FirstName varchar(256), LastName varchar(256))

  INSERT INTO @Table (FirstName, LastName)
  VALUES
  ('John','Smith'),
  ('Jane','Doe'),
  ('Evvy', 'Dury'),
  ('Silvester', 'Fauning'),
  ('Gayel', 'Menci'),
  ('Aurelia', 'Novkovic'),
  ('Indira', 'Lyal'),
  ('Brigham', 'Budgeon'),
  ('Dominik', 'Fermin'),
  ('Melina', 'Barrett'),
  ('Olivia', 'Fussell'),
  ('Belle', 'Sterry')

  DECLARE @Names varchar(4000)

  SELECT @Names = COALESCE(@Names + ',', '') + FirstName
  FROM @Table

  SELECT @Names
END

-- Result : John,Jane,Evvy,Silvester,Gayel,Aurelia,Indira,Brigham,Dominik,Melina,Olivia,Belle

10.2: Bir Sütundan İlk Null Olmayan Değeri Alma

1
2
3
SELECT COALESCE(NULL, NULL, 'hepsiburada.com', NULL, 'sahibinden.com');

-- Result: 'hepsiburada.com'
1
2
3
SELECT COALESCE(NULL, 'hepsiburada.com', 'sahibinden.com');

-- Result: 'hepsiburada.com'
1
2
3
SELECT COALESCE(NULL, NULL, 1, 2, 3, NULL, 4);

-- Result: 1

10.3: Örnek

COALESCE(), değişkenler listesindeki ilk NULL OLMAYAN değeri döndürür.

Diyelim ki telefon numaralarının bulunduğu bir tablomuz var. numaralar ve cep telefonu numaraları ve her kullanıcı için yalnızca bir tane döndürmek isteyelim.

1
2
3
4
5
6
7
8
9
10
11
DECLARE @Table TABLE (UserID int, PhoneNumber varchar(12), CellNumber varchar(12))
INSERT INTO @Table (UserID, PhoneNumber, CellNumber)
VALUES
(1, '555-869-1123', NULL),
(2, '555-123-7415', '555-846-7786'),
(3, NULL, '555-456-8521')

SELECT
  UserID,
  COALESCE(PhoneNumber, CellNumber)
FROM @Table
This post is licensed under CC BY 4.0 by the author.