case when else ,isnull

本文详细对比了SQLServer中的ISNULL(), CASE WHEN ELSE与Oracle中的NVL(), NVL2(), NULLIF()及CASE WHEN ELSE的使用方法。通过具体示例,帮助读者理解不同数据库系统中处理NULL值和条件判断的差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、sqlserver里的isnull()
oracle里nvl()
NVL(Expr1,Expr2)如果Expr1为NULL,返回Expr2的值,否则返回Expr1的值
NVL2(Expr1,Expr2,Expr3)如果Expr1不为NULL,返回Expr2的值,否则返回Expr3的值
NULLIF(Expr1,Expr2)如果Expr1和Expr2的值相等,返回NULL,否则返回Expr1的值

2、sqlserver里的case when else的用法:
 表名 = CASE WHEN a.colorder = 1 THEN d .name ELSE '' END, 
oracle里case when else的用法:
 (CASE WHEN a.colorder = 1 THEN d .name ELSE '' END) as 表名, 

### 使用 CASE WHEN ELSEISNULL 进行 SQL 数据处理 #### CASE WHEN ELSE 的基本语法 `CASE WHEN ELSE` 是一种条件表达式,用于返回多个可能的结果之一。其结构如下: ```sql CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 ... ELSE default_result END AS alias_name ``` 此语句允许基于不同的逻辑测试来决定最终的输出值[^1]。 #### ISNULL 函数的作用 `ISNULL` 函数用来替换查询结果中的 NULL 值为指定的替代值。该函数接受两个参数:第一个是要检查是否为空的列名或表达式;第二个是在遇到 null 时使用的默认值。语法形式如下所示: ```sql ISNULL(expression, replacement_value) ``` 当 `expression` 结果为 NULL,则返回 `replacement_value`; 否则返回原始 `expression` 的计算结果。 #### 组合使用案例分析 下面展示了一个具体例子,在这个场景里假设有一个名为 Orders 的订单表,其中包含 OrderID、OrderDate 及 Freight 字段。现在希望通过 SQL 查询实现以下功能: - 如果运费(Freight)大于等于 50 则显示 “High” - 若介于 30 至小于 50 显示 “Medium” - 小于 30 或者是 Null 都标记成 "Low" ```sql SELECT OrderID, OrderDate, Freight, CASE WHEN Freight >= 50 THEN 'High' WHEN Freight BETWEEN 30 AND 49.99 THEN 'Medium' ELSE 'Low' END as ShippingCostLevel, -- 替换任何可能出现的Null值为0 ISNULL(Freight, 0) As AdjustedFreight FROM Orders; ``` 上述代码片段不仅实现了根据不同范围内的数值分配标签的功能,同时也利用了 `ISNULL()` 来确保即使存在缺失的数据也不会影响整体判断流程。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值