CASE WHEN作为表达式使用的例子
时间: 2024-05-26 21:11:39 浏览: 119
CASE WHEN语句可以在SQL中用来根据条件进行选择和操作。以下是一个使用CASE WHEN作为表达式的例子:
SELECT product_name,
CASE
WHEN price < 10 THEN 'Cheap'
WHEN price >= 10 AND price < 50 THEN 'Affordable'
WHEN price >= 50 AND price < 100 THEN 'Expensive'
ELSE 'Very Expensive'
END
AS price_category
FROM products;
这个语句将商品按价格进行分类,并列出它们的名称和价格分类。如果价格小于10,它将被视为“便宜”,如果价格在10到50之间,它将被视为“经济实惠”,如果价格在50到100之间,它将被视为“昂贵”,否则会被视为“非常昂贵”。
相关问题
举例子说明case when 的表达式
当需要根据不同的条件返回不同的值时,可以使用CASE WHEN表达式。下面是一个示例:
假设有一个名为employee的表,其中包含员工的姓名和工资字段。我们想根据员工的工资水平将其分为不同的等级,可以使用CASE WHEN表达式来实现:
```
SELECT
name,
salary,
CASE
WHEN salary >= 10000 THEN '高级'
WHEN salary >= 5000 AND salary < 10000 THEN '中级'
ELSE '初级'
END AS level
FROM
employee;
```
在上述例子中,当员工的工资大于等于10000时,他们被标记为'高级';当工资在5000和10000之间时,他们被标记为'中级';其他情况下,他们被标记为'初级'。结果将返回员工的姓名、工资和对应的等级。
oracle 使用case when表达式索引
在Oracle数据库中,使用CASE WHEN表达式的索引是一种特殊的索引结构,它被称为“函数索引”或“表达式索引”。当你在一个WHERE子句中包含了CASE WHEN子句作为筛选条件时,虽然这个表达式不是直接键值,但Oracle允许你为这样的表达式创建索引来提升查询效率。
例如:
```sql
CREATE INDEX idx_customers_case
ON customers (CASE WHEN status = 'active' THEN 1 ELSE 2 END AS status_flag);
```
在这个例子中,我们为`status`字段创建了一个索引,但是索引的实际列是基于`CASE WHEN status = 'active' THEN 1 ELSE 2 END`的结果。这意味着当查询中包含类似`WHERE status_flag = 1`时,系统可以利用这个索引来加速搜索。
然而,需要注意的是,并非所有的CASE WHEN表达式都可以创建索引,只有那些返回常量、NULL或者简单表达式的CASE语句才有可能被优化。而且,如果表达式的结果分布不均匀,可能会导致索引效果不佳。
阅读全文