Scenario:
Du arbetar som SQL Server-utvecklare, du måste fråga dbo.Customer-tabell som har CountryShortName-kolumnen med landsförkortningar. Du vill generera ytterligare kolumner med landets fullständiga namn genom att använda kolumnvärdena för CountryShortName. Hur skulle du göra det?Lösning:
Du kan använda Case-uttryck för att generera den här nya kolumnen beroende på värdet på CountryShortName. I vårt exempel använder vi bara enstaka kolumner men du kan använda flera kolumner och kontrollera om det finns flera villkor.Låt oss skapa dbo.Kundtabell med några exempeldata och sedan skriver vi vår Select-sats med Case-uttryck.
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) Du kan använda Kolumnnamn som du vill kontrollera värdena för direkt efter Case som visas nedan. Skriv sedan alla villkor i den kolumnen och använd slutligen End som 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
Hur man använder fallbeskrivning i SQL Server - SQL Server / TSQL självstudie |
Om du inte gillar att använda Else-delen kan du ta bort den men i fall när du kommer att ha värde och den inte matchar dina villkor kommer den att returnera Null. I mitt fall, om värdet inte stämmer överens med mina villkor, skulle jag vilja visa som "Inte tillhandahållet" genom att använda Else-delen.
2) Använd inte kolumnnamn direkt efter Case-sökord Du kan också skriva ärendet enligt nedan. I exemplet nedan skrev vi inte Kolumnnamn direkt efter Case. I det här fallet måste vi skriva kolumn efter varje när. Det här sättet att skriva används när du vill kontrollera villkor för flera kolumner eller värdeintervall.
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
Hur man använder fallutlåtande för villkorlig formatering i SQL-fråga - SQL Server / TSQL självstudie |