MYSQL-----控制流程函式(case when...then..else..end)
阿新 • • 發佈:2019-01-02
MySQL有一些內建的控制流程函式,可以在SQL語句中使用這些函式來更加準確和直接的結果。
第一種語法:
case
when [value] then result
..................
end
第二種語法:
case
when [condition] then result
................
[else result]
end
該函式依據condition的值是否是真而產生不同的結果,除了多重條件與結果可能會繫結在一起之外,該函式與if()函式十分類似,上面顯示的語法在case之後給定的value值與每個when之後的value值進行比較,如果結果匹配,結果將返回then之後給出的result值.
第二種語法獨立地測試每個條件,它們並不是已單個值為基礎的,對於這兩種用法而言,如果找不到匹配的值,則應將else子句包括進來並返回else子句所給定的結果,如果既沒有匹配的值也沒有給定else子句,則結果返回NULL值。
如果選擇的result是字串,則結果返回一個字串資料型別的值,如果result是數值型的,那麼返回的結果可能是十進位制,實型或者整形的值。
示例需要實現的結果:age小於等於12的用1替換,age大於70小於100的用2替換,如下是簡單的查詢結果
第一種語法的示例如下:
#age:12,46,70,84#
select uuid,mobile,case
when age <= 12 then 1
when age >=70 and age <=100 then 2
end
as "年齡"
from user where mobile="53437569";
查詢結果:age小於等於12的用1已替換,age大於70小於100的用2已替換
第二種語法示例:多了一步else,當滿足給定的when條件後的其他值,將會用else給定的值來填充,將不會在出現NULL值
select uuid,mobile,case
when age <= 12 then 1
when age >=70 and age <=100 then 2
else 9
end
as "年齡"
from user where mobile="53437569";
查詢結果如下: