mysql nullif
时间: 2025-01-08 16:48:57 浏览: 3
### MySQL `NULLIF` 函数详解
#### 定义与语法
`NULLIF` 是一种条件函数,用于比较两个表达式的值。如果这两个表达式相等,则返回 `NULL`; 否则返回第一个表达式的值。
```sql
NULLIF(expr1, expr2)
```
当 `expr1 = expr2` 成立时,该函数会返回 `NULL`, 反之则返回 `expr1` 的值[^1]。
#### 使用场景举例
假设有一个表名为 `products` ,其中有一列叫做 `price`. 如果某些商品的价格被错误地标记为零,可以利用 `NULLIF` 来处理这种情况:
```sql
SELECT name,
price,
NULLIF(price, 0) as adjusted_price
FROM products;
```
此查询将把所有价格等于零的商品显示其调整后的价格为 `NULL`.
另一个例子是在字符串操作中的应用:
```sql
SELECT customer_name,
email_address,
NULLIF(email_address,'noemail@domain.com') AS valid_email
FROM customers;
```
这段 SQL 将任何电子邮件地址如果是 'noemail@domain.com' 则替换为 `NULL` 值.
#### 结合其他功能使用
还可以与其他聚合函数一起工作来实现更复杂的数据清洗逻辑。比如计算平均数时不考虑特定值的情况:
```sql
SELECT AVG(NULLIF(score, -99)) average_score_excluding_invalids
FROM scores_table;
```
这里 `-99` 被认为是一个无效分数,在求均值之前会被转换成 `NULL` 并忽略掉这些记录[^3].
阅读全文