在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`。