[T-SQL] CASE語法

摘要:[T-SQL] CASE語法

 

 1. 單一值的比對

在case中的p.counter_name會與when裡的值作比對,若相同則將then之後的值傳回;

如果沒有任何一個符合when裡的值,有Else...傳回Else後的值,否則傳回Null

 

case p.counter_name

        when 'Cache Hit Ratio Base' then  p.cntr_value

        [when...n個]       

        [else 0]

end 

 

 

(設定變數給值)

 declare @a int = 1

set  @answer= case @a

      when 1 then 'A'

      when 2 then 'B'

      when 3 then 'C'

       Else 'Others'

End  pr print 

print @a → 'A'

 

2. 多種條件的判斷

 若case之後不接任何的運算式,則When之後必須為一邏輯運算式,當為true時將Then之後的值傳回

 case

       when convert(sysname,serverproperty('Servername')) like '%\%' then 'MSSQL$' + @@servicename

       else 'SQLServer'

end

 

(可以用於 Select 後,傳回單一值)

select case when convert(sysname,serverproperty('Servername')) like '%\%' then 'MSSQL$' + @@servicename else 'SQLServer' end

 

(判斷運算式給值)

declare @a int =600, @answer char
set  @answer=
case
      when @a>100 and @a<=300 then 'A'
      when @a>300 and @a<=500 then 'B'
      when @a>500  then 'C'
      Else 'D'
End

print @answer →'B'