nvl() 和 isnull

本文详细介绍了ISNULL和NVL两个SQL函数的用法。ISNULL函数用于当检查的表达式为NULL时返回替代值,否则返回该表达式本身。NVL函数则返回两个表达式中非NULL的一个。这两个函数常用于处理数据库查询中的NULL值。

ISNULL()函数

语法   
ISNULL ( check_expression , replacement_value)
参数
   check_expression
   将被检查是否为    NULL的表达式。check_expression    可以是任何类型的。   
   replacement_value   
   在    check_expression    为    NULL时将返回的表达式。replacement_value    必须与    check_expresssion    具有相同的类型。     
返回类型
   返回与    check_expression    相同的类型。   
注释
   如果    check_expression    不为    NULL,那么返回该表达式的值;否则返回    replacement_value。

----------------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------------

nvl( ) 函数

从两个表达式返回一个非 null 值。
语法
NVL(eExpression1, eExpression2)
参数
eExpression1, eExpression2
如果 eExpression1 的计算结果为 null 值,则 NVL( ) 返回 eExpression2。如果 eExpression1 的计算结果不是 null 值,则返回 eExpression1。eExpression1 和 eExpression2 可以是任意一种数据类型。如果 eExpression1 与 eExpression2 的结果皆为 null 值,则 NVL( ) 返回 .NULL.。
返回值类型
字符型、日期型、日期时间型、数值型、货币型、逻辑型或 null 值
说明
在不支持 null 值或 null 值无关紧要的情况下,可以使用 NVL( ) 来移去计算或操作中的 null 值。

select nvl(a.name,'空得') as name from student a join school b on a.ID=b.ID

注意:两个参数得类型要匹配

```markdown 题目重述 如何在 SQL Server 中正确使用 `ISNULL()` 函数? 详解 `ISNULL()` 是 SQL Server 中用于处理 `NULL` 值的函数。其基本用法是:如果一个表达式为 `NULL`,则用另一个值替代它。 ### 语法结构: ```sql ISNULL(check_expression, replacement_value) ``` - `check_expression`:需要检查是否为 `NULL` 的表达式(如字段、计算结果等)。 - `replacement_value`:如果 `check_expression` 是 `NULL`,则返回这个替代值。 > ⚠️ 注意:`replacement_value` 必须与 `check_expression` 的数据类型兼容,否则会引发类型转换错误。 --- ### 使用示例: #### 示例 1:基础用法 ```sql SELECT ISNULL(NULL, 0); -- 返回 0 SELECT ISNULL(5, 0); -- 返回 5 ``` #### 示例 2:字段中使用 假设有一个表 `sc`,其中部分学生的成绩为 `NULL`: | sno | grade | |-----|-------| | s01 | 85 | | s02 | NULL | 可以使用 `ISNULL()` 将 `NULL` 替换为 `0`: ```sql SELECT sno, ISNULL(grade, 0) AS 成绩 FROM sc; ``` 输出: | sno | 成绩 | |-----|------| | s01 | 85 | | s02 | 0 | #### 示例 3:在聚合函数中使用 当学生未选课时,`AVG(grade)` 可能为 `NULL`,我们可以用 `ISNULL()` 将其显示为 `0`: ```sql SELECT stu.sno, ISNULL(AVG(sc.grade), 0) AS 平均成绩 FROM stu LEFT JOIN sc ON stu.sno = sc.sno GROUP BY stu.sno; ``` --- ### 与其他数据库对比 - SQL Server 使用 `ISNULL()` - MySQL 使用 `IFNULL()` - Oracle 使用 `NVL()` - 所有数据库通用的函数是 `COALESCE()`,它支持多个参数,例如: ```sql SELECT COALESCE(grade, 0); ``` --- 知识点(列出解答该问题需要的知识点) - **ISNULL() 函数**:用于将 NULL 替换为指定值,适用于 SQL Server。 - **NULL 值的处理**:在数据库中表示缺失值,参与计算或显示时需特别处理。 - **数据类型兼容性**:替换值与原始表达式类型必须一致,否则报错。 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值