Direkt zum Inhalt
HeimAnleitungenSQL

COALESCE SQL-Funktion

COALESCE() ist eine der praktischsten Funktionen in SQL. Lies dieses Tutorial, um zu erfahren, wie du es meistern kannst.
Aktualisierte 11. Sept. 2024  · 4 Min. lesen

Was ist die COALESCE()Funktion?

Coalesce gibt den ersten Nicht-Null-Wert in einer Liste zurück. Wenn alle Werte in der Liste NULL sind, dann gibt die Funktion Null zurück.

Wann verwendet man COALESCE()?

Diese Funktion ist nützlich, wenn du die Werte aus mehreren Spalten zu einer zusammenfassen willst.

Die Tabelle "Benutzer" enthält zum Beispiel die Werte der Benutzer work_email und personal_email.

Mit der Funktion COALESCE() können wir eine Spalte namens E-Mail erstellen, die die E-Mail-Adresse des Nutzers work_email anzeigt, wenn sie nicht null ist. Andernfalls zeigt sie personal_email an.

user_id

work_email

personal_email

COALESCE() von

work_email und

personal_email

1

angel@datacamp.com

null

angel@datacamp.com

2

null

bruce@gmail.com

bruce@gmail.com

3

cath@datacamp.com

cath@gmail.com

cath@datacamp.com

SQL Upskilling für Einsteiger

Erwerbe die SQL-Kenntnisse, um mit deinen Daten zu interagieren und sie abzufragen.

COALESCE() syntax

COALESCE(value_1, value_2, ...., value_n)

Die Funktion COALESCE() nimmt mindestens einen Wert auf (value_1). Es wird der erste Wert in der Liste zurückgegeben, der nicht null ist. 

Zum Beispiel wird zuerst geprüft, ob value_1 null ist. Wenn nicht, dann gibt es value_1 zurück. Andernfalls wird geprüft, ob value_2 null ist. So geht es weiter, bis die Liste vollständig ist. 

COALESCE() Beispiele

Führe den Code aus diesem Tutorial online aus und bearbeite ihn

Code ausführen

Beispiel 1: COALESCE() eine Spalte mit einer Konstante

Betrachte die Tabelle countries mit einer Liste von Ländern und ihren Nationalfeiertagen. Einige nationale Tage sind leer. Bei Zeilen mit leeren Nationalfeiertagen können wir sie mit dem Wert 'Unknown' ausfüllen. 

Die Abfrage und das Ergebnis lauten wie folgt. 

SELECT
   country_id,
   name, 
   national_day,
   COALESCE(national_day, 'Unknown') AS national_day_coalesced
FROM countries
ORDER BY country_id

country_id

name

national_day

national_day_coalesced

1

Aruba

null

Unbekannt

2

Afghanistan

1919-08-19T00:00:00.000Z

1919-08-19

3

Angola

1975-11-11T00:00:00.000Z

1975-11-11

4

Anguilla

1967-05-30T00:00:00.000Z

1967-05-30

Beachte, dass der Wert null in national_day durch eine Konstante Unknown ersetzt wird. 

Beispiel 2: COALESCE() zwei Spalten

Wir haben eine Tabelle namens products. Sie enthält den Produktnamen und seine Beschreibung. Einige Beschreibungen sind zu lang (mehr als 60 Zeichen). In diesem Fall ersetzen wir die Beschreibung durch den Produktnamen.

Die Abfrage und das Ergebnis lauten wie folgt.

SELECT DISTINCT
   product_name,
   description,
   COALESCE(
      CASE WHEN 
         LENGTH(description) >= 60 
         THEN NULL 
         ELSE description 
         END, 
      product_name) product_name_or_description
FROM products
product_name

description

product_name_or_description

G.Skill Ripjaws V Serie

"Speed:DDR4-3200,Type:288-pin DIMM,CAS:14Module:4x16GBSize:64GB"

G.Skill Ripjaws V Serie

G.Skill Ripjaws V Serie

"Speed:DDR4-3200,Type:288-pin DIMM,CAS:15Module:4x16GBSize:64GB"

G.Skill Ripjaws V Serie

Asus X99-E-10G WS

"CPU:LGA2011-3,Formfaktor:SSI CEB,RAM Slots:8,Max RAM:128GB"

"CPU:LGA2011-3,Formfaktor:SSI CEB,RAM Slots:8,Max RAM:128GB"

Supermicro X9SRH-7TF

"CPU:LGA2011,Formfaktor:ATX,RAM Slots:8,Max RAM:64GB"

"CPU:LGA2011,Formfaktor:ATX,RAM Slots:8,Max RAM:64GB"

Beachte, wie die Spalte product_name_or_description die product_name anzeigt, wenn die description lang ist. Andernfalls wird die Seite description angezeigt.

 Beispiel 3: COALESCE() drei Spalten oder mehr

Wir können Beispiel 2 noch einen Schritt weitergehen. Nehmen wir an, dass es derzeit zwei Anforderungen gibt.

  • Wenn die Länge der description weniger als 60 beträgt, dann zeige die description an.
  • Andernfalls prüfe, ob die Länge der product_name weniger als 20 beträgt. Wenn ja, zeigen wir die product_name
  • Sonst wird angezeigt product
SELECT DISTINCT
   product_name,
   description,
   COALESCE(
      CASE 
         WHEN LENGTH(description) > 50
         THEN NULL
         ELSE description
      END,
   CASE 
      WHEN LENGTH(product_name) > 14
      THEN NULL
      ELSE product_name
   END,
'product') AS product_name_or_description
FROM products
ORDER BY product_name

product_name

description

product_name_or_description

ADATA ASU800SS-128GT-C

Serie:Ultimate SU800,Typ:SSD,Kapazität:128GB,Cache:N/A

Produkt

ADATA ASU800SS-512GT-C

Serie:Ultimate SU800,Typ:SSD,Kapazität:512GB,Cache:N/A

Produkt

AMD 100-5056062

Chipsatz:Vega Frontier Edition Liquid,Speicher:16GBKerntakt:1,5GHz

Produkt

AMD 100-505989

Chipset:FirePro W9100,Memory:32GBCore Clock:930MHz

Chipset:FirePro W9100,Memory:32GBCore Clock:930MHz

Beachte, dass in der Spalte product_name_or_description entweder product_name oder description angezeigt wird, je nachdem wie lang product_name oder description ist.

Technische Anforderungen

COALESCE() funktioniert in SQL Server (ab 2008), Azure SQL Database, Azure SQL Data Warehouse, Parallel Data Warehouse, BigQuery und Amazon RedShift.

Siehe auch

Erfahre mehr über SQL

Themen

Beliebte SQL-Kurse

Zertifizierung verfügbar

Course

Einführung in SQL

2 hr
755.1K
Lerne in nur zwei Stunden, wie man relationale Datenbanken mit SQL erstellt und abfragt.
See DetailsRight Arrow
Start Course
Mehr anzeigenRight Arrow