Szenario:
Sie arbeiten als SQL Server-Entwickler und müssen die dbo.Customer-Tabelle abfragen, die eine CountryShortName-Spalte mit Länderkürzeln enthält. Sie möchten weitere Spalten mit dem vollständigen Namen des Landes generieren, indem Sie die Spaltenwerte CountryShortName verwenden. Wie würden Sie das machen?Lösung:
Sie können Case-Ausdrücke verwenden, um diese neue Spalte abhängig vom Wert von CountryShortName zu generieren. In unserem Beispiel verwenden wir nur einzelne Spalten, aber Sie können mehrere Spalten verwenden und auf mehrere Bedingungen prüfen.Erstellen wir eine dbo.Customer-Tabelle mit einigen Beispieldaten und schreiben dann unsere Select-Anweisung mit Case-Ausdruck.
Create table dbo.Customer (Id int, FName VARCHAR(50), LName VARCHAR(50), CountryShortName CHAR(2)) GO insert into dbo.Customer Values ( 1,'Raza','M','PK'), (2,'Rita','John','US'), (3,'Sukhi','Singh',Null)
1) Sie können den Spaltennamen, für den Sie die Werte überprüfen möchten, direkt nach Case verwenden, wie unten gezeigt. Schreiben Sie dann alle Bedingungen in diese Spalte und verwenden Sie schließlich End als NewColumnName
Select FName, LName, CountryShortName, Case CountryShortName When 'Pk' Then 'Pakistan' When 'US' Then 'United States of America' When 'IN' Then 'India' Else 'Not Provided' End AS CountryFullName From dbo.Customer
Verwendung der Case-Anweisung in SQL Server - SQL Server / TSQL-Tutorial |
Wenn Sie den Else-Teil nicht verwenden möchten, können Sie ihn entfernen, aber falls Sie einen Wert haben und er nicht mit Ihren Bedingungen übereinstimmt, wird Null zurückgegeben. Wenn der Wert in meinem Fall nicht mit meinen Bedingungen übereinstimmt, möchte ich ihn als „Nicht bereitgestellt“ anzeigen, indem ich den Else-Teil verwende.
2) Verwenden Sie den Spaltennamen nicht direkt nach dem Case-Schlüsselwort Sie können die Case-Anweisung auch wie unten gezeigt schreiben. Im folgenden Beispiel haben wir den Spaltennamen nicht direkt nach Case geschrieben. In diesem Fall müssen wir nach jedem When eine Spalte eingeben. Diese Schreibweise wird verwendet, wenn Sie Bedingungen für mehrere Spalten oder Wertebereiche prüfen möchten.
Select FName, LName, CountryShortName, Case When CountryShortName='Pk' Then 'Pakistan' When CountryShortName='US' Then 'United States of America' When CountryShortName='IN' Then 'India' Else 'Not Provided' End AS CountryFullName From dbo.Customer
Verwendung der Case-Anweisung für die bedingte Formatierung in SQL-Abfragen – SQL Server / TSQL-Tutorial |