Sql Server 中使用case when then 判斷某字段是否為null,和判斷是否為字符或數字時的寫法不一樣,如果不注意,很容易搞錯
錯誤方法:
CASE columnName WHEN null THEN 0 ELSE columnName END
正確方法:
CASE WHEN columnName is null THEN 0 ELSE columnName END
Case具有兩種格式。簡單Case函數和Case搜索函數。
--簡單Case函數
CASE sex
WHEN '1' THEN '男'
WHEN '2' THEN '女'
ELSE '其他' END
--Case搜索函數
CASE WHEN sex = '1' THEN '男'
WHEN sex = '2' THEN '女'
ELSE '其他' END
這兩種方式,可以實現相同的功能。簡單Case函數的寫法相對比較簡潔,但是和Case搜索函數相比,功能方面會有些限制,比如寫判斷式。
還有一個需要注意的問題,Case函數只返回第一個符合條件的值,剩下的Case部分將會被自動忽略。
兩者中可以根據不同的需求來選擇