1. CASE WHEN 表达式有两种形式
--简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END --Case搜索函数 CASE WHEN sex = '1' THEN '男' WHEN sex = '2' THEN '女' ELSE '其他' END
2. CASE WHEN 在语句中不同位置的用法
2.1 SELECT CASE WHEN 用法
SELECT grade, COUNT (CASE WHEN sex = 1 THEN 1 /*sex 1为男生,2位女生*/ ELSE NULL END) 男生数, COUNT (CASE WHEN sex = 2 THEN 1 ELSE NULL END) 女生数 FROM students GROUP BY grade;
2.3 WHERE CASE WHEN 用法
SELECT T2.*, T1.* FROM T1, T2 WHERE (CASE WHEN T2.COMPARE_TYPE = 'A' AND T1.SOME_TYPE LIKE 'NOTHING%' THEN 1 WHEN T2.COMPARE_TYPE != 'A' AND T1.SOME_TYPE NOT LIKE 'NOTHING%' THEN 1 ELSE 0 END) = 1
2.4 GROUP BY CASE WHEN 用法
SELECT CASE WHEN salary <= 500 THEN '1' WHEN salary > 500 AND salary <= 600 THEN '2' WHEN salary > 600 AND salary <= 800 THEN '3' WHEN salary > 800 AND salary <= 1000 THEN '4' ELSE NULL END salary_class, -- 别名命名 COUNT(*) FROM Table_A GROUP BY CASE WHEN salary <= 500 THEN '1' WHEN salary > 500 AND salary <= 600 THEN '2' WHEN salary > 600 AND salary <= 800 THEN '3' WHEN salary > 800 AND salary <= 1000 THEN '4' ELSE NULL END;
3.关于IF-THEN-ELSE的其他实现
3.1 DECODE() 函数
select decode(sex, 'M', 'Male', 'F', 'Female', 'Unknown') from employees;
貌似只有Oracle提供该函数,而且不支持ANSI SQL,语法上也没CASE WHEN清晰,个人不推荐使用。
3.2 在WHERE中特殊实现
SELECT T2.*, T1.* FROM T1, T2 WHERE (T2.COMPARE_TYPE = 'A' AND T1.SOME_TYPE LIKE 'NOTHING%') OR (T2.COMPARE_TYPE != 'A' AND T1.SOME_TYPE NOT LIKE 'NOTHING%')
这种方法也是在特殊情况下使用,要多注意逻辑,不要弄错。
转自:http://www.cnblogs.com/eshizhan/archive/2012/04/06/2435493.html#commentform
相关推荐
在 Oracle 数据库中,`CASE WHEN` 表达式提供了一种在 SQL 查询中实现条件判断的方法,这使得开发人员能够在不使用 PL/SQL 的情况下编写更为灵活和复杂的查询语句。`CASE WHEN` 与 `DECODE()` 函数相似,但因其符合 ...
1. CASE WHEN 表达式有两种形式 代码如下:–简单Case函数 CASE sex ... CASE WHEN 在语句中不同位置的用法2.1 SELECT CASE WHEN 用法 代码如下:SELECT grade, COUNT (CASE WHEN sex = 1 THEN 1 /*sex 1为男生,2位
oracle-case-when的使用方法.doc
在阅读博客文章《decode函数与case when 的妙用》时,作者可能分享了一些具体的示例和使用技巧,帮助我们更好地理解和掌握这两种方法。通过学习和实践,我们可以将这些知识应用于日常的数据库操作,优化数据处理流程...
在自定义排序中,`CASE-WHEN`可以这样使用: ```sql SELECT * FROM table_date ORDER BY ( CASE DateStr WHEN 'Monday' THEN 1 WHEN 'Tuesday' THEN 2 WHEN 'Wednesday' THEN 3 WHEN 'Thursday' THEN 4 WHEN ...
【Oracle使用CASE判断解决多值问题】 在Oracle数据库中,面对多值判断的场景,我们经常需要对数据进行复杂的逻辑处理。在这个问题中,我们有一个专业表ZY_TAB,包含专业名称(ZY_NAME),专业代码(ZY_CODE),专业类型...
在描述中提到的方法,通过使用`CASE WHEN THEN ELSE END`语句,我们可以实现更简洁且高效的统计查询。 `CASE`表达式在SQL中是一个非常强大的工具,它允许我们在查询中进行条件判断。在Oracle中,`CASE`语句的基本...
在Oracle SQL中,有几个关键概念和技术值得深入理解,包括CASE WHEN语句、查看执行计划、文本操作、锁定和解锁表以及游标。以下是对这些知识点的详细解释: 1. **CASE WHEN语句**: CASE WHEN是SQL中的一个条件...
#### 二、函数定义及使用方法 - **`fn_getpyKGJG`**: 返回带有空格间隔的拼音。 - 参数说明: - `p_str`: 输入的汉字字符串。 - `p_flag`: 控制拼音格式的参数,默认为 `NULL`。 - `0`: 返回全小写的拼音,每个...
下面我们将详细讲解DECODE函数的使用方法以及如何在列转行操作中应用它。 DECODE函数的基本语法如下: ```sql DECODE(column, value1, result1, value2, result2, ..., default_result) ``` 这里`column`是要检查的...
在这个查询中,SUM函数与CASE WHEN一起使用,如果`IPTV_NBR`或`ACC_NBR`为空或等于空字符串,那么对应的CASE WHEN表达式结果为0,否则为1。然后,SUM函数将这些1或0相加,得到每组中非空值的数量。 2. SUM字符串...
### Oracle 判断字符串是否能转换为数字的方法 在Oracle数据库中,我们经常需要处理各种数据类型之间的转换。尤其是在处理字符型数据时,有时我们需要判断一个字符串是否能够被成功地转换成数字类型。与SQL Server...
4. **CASE_NOT_FOUND** (ORA-06592): 使用`CASE`语句时,如果`WHEN`子句中没有匹配的条件分支并且没有`ELSE`语句,就会引发此异常。解决办法是在`CASE`语句中提供一个默认的`ELSE`分支。 5. **COLLECTION_IS_NULL**...
##### 2.1 方法一:使用CASE WHEN语句 这种方法适用于字段数量较少的情况,通过`CASE WHEN`语句可以根据特定条件将行转换为列。 **示例代码**: ```sql SELECT id, 编号, CASE WHEN bbb = '执行总和' THEN aaa ...
例如,给定文件中的第一段代码展示了如何在Oracle中使用`CASE WHEN`来替代MySQL中的`IF`函数。具体而言: ```sql -- Oracle SELECT (CASE WHEN NVL(列1, 0) > 0 AND NVL(列2, 0) > 10 THEN 1 ELSE 0 END) AS num ...
在 Oracle 中,通常使用 decode 或者 case 函数与聚合函数联合实现列转行功能。但是,这种方法存在一些缺陷,例如性能问题和数据重复访问问题。在本文中,我们将介绍一种新的解决方案,来解决 Oracle 列转行问题。 ...
Oracle数据库中的`Decode()`函数和`CASE`语句都是用于条件判断和数据转换的重要工具,它们各有特点,适用场景也有所不同。以下是对这两个功能的详细比较。 首先,`Decode()`函数是一个简化的条件表达式,它允许你在...