在SQL中,你可以使用`COALESCE`函數或者`CASE`語句來為`SELECT`查詢設置默認值,特別是當你希望針對可能為`NULL`的列返回一個替代值時。雖然這不是在列定義中設置默認值(那是在創建或修改表結構時完成的),但它允許你在查詢結果中動態替換`NULL`或滿足特定條件的值。
1、使用 `COALESCE`
`COALESCE`函數接受一系列參數,并返回第一個非`NULL`值。如果所有參數都是`NULL`,則返回`NULL`。這可以用來為`SELECT`查詢中的`NULL`值指定一個默認值。
```sql
SELECT COALESCE(column_name, 'default_value') FROM table_name;
```
這將返回`column_name`的值,如果`column_name`是`NULL`,則返回`'default_value'`。
2、使用 `CASE`
另一個選擇是使用`CASE`語句,它提供了更多的靈活性,允許基于特定條件來返回值。
```sql
SELECT
CASE
WHEN column_name IS NULL THEN 'default_value'
ELSE column_name
END
FROM table_name;
```
這將檢查`column_name`是否為`NULL`,如果是,就返回`'default_value'`;否則,返回`column_name`的實際值。
3、示例
假設有一個名為`Employees`的表,其中包含一個名為`Department`的列,該列在某些記錄中可能為`NULL`。如果你想在查詢結果中將這些`NULL`值替換為`'N/A'`,可以這樣做:
使用`COALESCE`:
```sql
SELECT Name, COALESCE(Department, 'N/A') AS Department FROM Employees;
```
使用`CASE`:
```sql
SELECT
Name,
CASE
WHEN Department IS NULL THEN 'N/A'
ELSE Department
END AS Department
FROM Employees;
```
這兩個查詢都會為`Department`列中的`NULL`值返回`'N/A'`,而不是`NULL`。