sql >> Databasteknik >  >> RDS >> Sqlserver

Hur man använder Case Statement för villkorlig formatering i Select Query - SQL Server / TSQL självstudie del 116

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
 

  1. Oracle Database Link - MySQL-ekvivalent?

  2. SQL-fel med Order By i Subquery

  3. Hur kan jag skriva SQL för en tabell som har samma namn som ett skyddat nyckelord i MySql?

  4. Finns det ANY_VALUE-kapacitet för mysql 5.6?