Microsoft SQL Server
ŁĄCZYĆ
Szukaj…
Składnia
- COALESCE ([Kolumna1], [Kolumna2] .... [KolumnaN]
Używanie COALESCE do budowania łańcucha rozdzielanego przecinkami
Możemy uzyskać ciąg rozdzielany przecinkami z wielu wierszy za pomocą koalescencji, jak pokazano poniżej.
Ponieważ używana jest zmienna tabeli, musimy wykonać całe zapytanie raz. Aby ułatwić zrozumienie, dodałem blok BEGIN i END.
BEGIN
--Table variable declaration to store sample records
DECLARE @Table TABLE (FirstName varchar(256), LastName varchar(256))
--Inserting sample records into table variable @Table
INSERT INTO @Table (FirstName, LastName)
VALUES
('John','Smith'),
('Jane','Doe')
--Creating variable to store result
DECLARE @Names varchar(4000)
--Used COLESCE function, so it will concatenate comma seperated FirstName into @Names varible
SELECT @Names = COALESCE(@Names + ',', '') + FirstName
FROM @Table
--Now selecting actual result
SELECT @Names
END
Podstawowy przykład koalescencji
COALESCE()
zwraca pierwszą NON NULL
na liście argumentów. Załóżmy, że mieliśmy tabelę zawierającą numery telefonów i numery telefonów komórkowych i chcieliśmy zwrócić tylko jeden dla każdego użytkownika. Aby uzyskać tylko jeden, możemy uzyskać pierwszą NON NULL
.
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
Uzyskiwanie pierwszego nie zerowego z listy wartości kolumn
SELECT COALESCE(NULL, NULL, 'TechOnTheNet.com', NULL, 'CheckYourMath.com');
Result: 'TechOnTheNet.com'
SELECT COALESCE(NULL, 'TechOnTheNet.com', 'CheckYourMath.com');
Result: 'TechOnTheNet.com'
SELECT COALESCE(NULL, NULL, 1, 2, 3, NULL, 4);
Result: 1
Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow