摘要:[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
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'