Direkt zum Inhalt

Wie man die Funktion COALESCE() in SQL verwendet (mit Beispielen)

Lerne anhand von praktischen Beispielen und Tipps, wie du die SQL-Funktion COALESCE() verwendest, um Nullwerte zu behandeln, Spalten zu kombinieren und deine Daten zu bereinigen.
Aktualisierte 28. März 2025  · 5 Min. Lesezeit

Wenn du mit realen Daten arbeitest, sind fehlende Werte fast unvermeidlich. Egal ob du Datensätze bereinigst oder Spalten zusammenführst, SQL bietet eine einfache, aber leistungsstarke Lösung: die Funktion COALESCE(). In diesem Tutorial erfährst du, wie COALESCE() funktioniert, wann du es einsetzen kannst und wie du es anhand von praktischen Beispielen anwendest - und das alles in nur wenigen Zeilen SQL.

Was ist COALESCE() in SQL?

Die Funktion COALESCE() in SQL gibt den ersten Nicht-Null-Wert aus einer Liste von Ausdrücken zurück. Wenn alle Werte null sind, wird null zurückgegeben. Sie wird häufig verwendet, um mit fehlenden Werten umzugehen oder mehrere Spalten in einer Fallback-Ausgabe zu kombinieren.

Wann solltest du COALESCE() verwenden?

Diese Funktion ist nützlich, wenn du die Werte aus mehreren Spalten zu einer einzigen 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

Syntax von COALESCE()

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

Die Funktion COALESCE() nimmt mindestens einen Wert auf (value_1). Sie gibt den ersten Nicht-Null-Wert in der Liste zurück, von links nach rechts.

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() kann mit Spalten, Ausdrücken oder Konstanten verwendet werden.

Praktische Beispiele für COALESCE()

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

Code ausführen

Beispiel 1: Ersetzen der Null durch eine Konstante

Betrachte die Tabelle countries mit einer Liste von Ländern und ihren Nationalfeiertagen. Einige nationale Tageswerte sind null. COALESCE() füllt fehlende Werte in national_day mit der konstanten Zeichenfolge 'Unknown' auf.

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

Die Ergebnisse sind wie folgt:

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: Zwischen zwei Spalten wählen

Wir haben eine Tabelle mit dem Namen 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 folgende Abfrage verwendet CASE, um lange Beschreibungen in NULL umzuwandeln, und verwendet dann COALESCE(), um auf den Produktnamen zurückzugreifen.

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

Die Ergebnisse sind wie folgt:

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: Fallback-Logik mit mehreren Spalten

Wir können Beispiel 2 noch einen Schritt weiter gehen. 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 an.
  • Andernfalls wird product angezeigt.
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

Die Ergebnisse sind wie folgt:

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

Chipsatz:FirePro W9100,Speicher:32GBKerntakt:930MHz

Chipsatz:FirePro W9100,Speicher:32GBKerntakt: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.

Unterstützte SQL-Engines

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

Verwandte SQL-Funktionen

Schlussgedanken

Die Funktion COALESCE() ist ein vielseitiges Werkzeug, um Nullwerte zu behandeln und deine SQL-Abfragen zu vereinfachen. Egal, ob du fehlende Daten durch Standardwerte ersetzt oder mehrere Spalten zu einer zusammenfasst, COALESCE() hilft dir, deine Logik sauber und lesbar zu halten.

Bist du bereit, deine SQL-Kenntnisse zu vertiefen? Schau dir diese anfängerfreundlichen und karrierefördernden Kurse auf DataCamp an:

FAQs

Was passiert, wenn alle Werte in COALESCE() NULL sind?

Wenn jedes an die Funktion COALESCE() übergebene Argument NULL ist, gibt die Funktion NULL zurück.

Wie unterscheidet sich COALESCE() von ISNULL() oder IFNULL()?

  • ISNULL() (SQL Server) und IFNULL() (MySQL, SQLite) akzeptieren nur zwei Argumente.
  • COALESCE() kann mehrere Argumente akzeptieren und ist ein Standard in allen SQL-Dialekten.

  • COALESCE() ist Teil des ANSI SQL-Standards, während ISNULL() und IFNULL() datenbankspezifisch sind.

Kann ich COALESCE() mit Ausdrücken oder Funktionen verwenden?

Ja, du kannst Spaltennamen, Literale, Funktionen oder Ausdrücke innerhalb von COALESCE() verwenden.

COALESCE(LOWER(name), 'unknown')

Ist die Verwendung von COALESCE() mit Leistungseinbußen verbunden?

Im Allgemeinen ist no-COALESCE() effizient. Wenn du sie jedoch mit komplexen Ausdrücken oder in großen Abfragen verwendest, kann es sein, dass die Datenbank mehr Ausdrücke auswertet als nötig, je nachdem, wie sie geschrieben ist.

Funktioniert COALESCE() mit verschiedenen Datentypen?

Ja, aber alle Argumente sollten implizit in einen gemeinsamen Datentyp konvertierbar sein. Andernfalls kann es je nach SQL-Engine zu einem Typkonvertierungsfehler kommen.

Kann ich COALESCE()-Funktionen verschachteln?

Ja. Du kannst sie verschachteln, aber das ist selten nötig, da COALESCE() bereits mehrere Argumente verarbeitet:

COALESCE(col1, COALESCE(col2, 'default'))

Dies ist gleichbedeutend mit:

COALESCE(col1, col2, 'default')
Themen

Beliebte SQL-Kurse

Zertifizierung verfügbar

Kurs

Einführung in SQL

2 hr
1.1M
Lerne in nur zwei Stunden, wie man relationale Datenbanken mit SQL erstellt und abfragt.
Siehe DetailsRight Arrow
Kurs starten
Mehr anzeigenRight Arrow
Verwandt

Der Blog

Die 20 besten Snowflake-Interview-Fragen für alle Niveaus

Bist du gerade auf der Suche nach einem Job, der Snowflake nutzt? Bereite dich mit diesen 20 besten Snowflake-Interview-Fragen vor, damit du den Job bekommst!
Nisha Arya Ahmed's photo

Nisha Arya Ahmed

15 Min.

Der Blog

Q2 2023 DataCamp Donates Digest

DataCamp Donates hat im zweiten Quartal 2023 über 20.000 Stipendien an unsere gemeinnützigen Partner vergeben. Erfahre, wie fleißige benachteiligte Lernende diese Chancen in lebensverändernde berufliche Erfolge verwandelt haben.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

Der Blog

Die 50 besten AWS-Interview-Fragen und Antworten für 2025

Ein kompletter Leitfaden zur Erkundung der grundlegenden, mittleren und fortgeschrittenen AWS-Interviewfragen, zusammen mit Fragen, die auf realen Situationen basieren.
Zoumana Keita 's photo

Zoumana Keita

15 Min.

Der Blog

Lehrer/innen und Schüler/innen erhalten das Premium DataCamp kostenlos für ihre gesamte akademische Laufbahn

Keine Hacks, keine Tricks. Schüler/innen und Lehrer/innen, lest weiter, um zu erfahren, wie ihr die Datenerziehung, die euch zusteht, kostenlos bekommen könnt.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

4 Min.

Der Blog

Top 30 Generative KI Interview Fragen und Antworten für 2024

Dieser Blog bietet eine umfassende Sammlung von Fragen und Antworten zu generativen KI-Interviews, die von grundlegenden Konzepten bis hin zu fortgeschrittenen Themen reichen.
Hesam Sheikh Hassani's photo

Hesam Sheikh Hassani

15 Min.

Der Blog

2022-2023 DataCamp Classrooms Jahresbericht

Zu Beginn des neuen Schuljahres ist DataCamp Classrooms motivierter denn je, das Lernen mit Daten zu demokratisieren. In den letzten 12 Monaten sind über 7.650 neue Klassenzimmer hinzugekommen.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

8 Min.

Mehr anzeigenMehr anzeigen