0 0

sql 查询时 ( in 与 case when then else end 结合) 使用的问题?3

如下:
select * from tab1 t where t.colum1 in(case t.flag when 1 then '''001'',''002''' else '''001'',''002''' end)


如上描述,假如tab1表中有多条记录,并且colum1(字段数据类型:varchar2)字段中有为001与002的值 ,可用以上语句却查询不出一条记录?我测试了一下: select case t.flag when 1 then '''001'',''002''' else '''001'',''002''' end from dual 返回的是:
字符串 '001','002' 按理说是符合 in 条件查询的。麻烦各位帮忙看看问题出在哪里。或是有更好的方法还望不吝赐教啊!(在oracle数据库中测试的)

注:case t.flag when 1 then '''001'',''002''' else '''001'',''002''' end 红色部分的值是用java程序从配置文件中读取出来的

问题补充:orcale字符串拼接不支持“+”的吧,这样式不行的,'''001''' + ','+ '''002'''  这些数据时通过一个方法返回的字符串。不过我改成“||”拼接还是查不出记录in('001','002')这样只就可以,加上case 语句就不行了。。。
fengxiaofeng 写道
select * from tab1 t where t.colum1 in(case t.flag when 1 then '''001''' + ','+ '''002''' else '''001''' + ','+ '''002''' end)

2010年7月23日 16:19

1个答案 按时间排序 按投票排序

0 0

select * from tab1 t where t.colum1 in(case t.flag when 1 then '''001''' + ','+ '''002''' else '''001''' + ','+ '''002''' end)

2010年7月23日 16:59

相关推荐

    sql数据库 转 Access SQL语句改写之 Case When Then When Then Else End

    ### SQL数据库转Access SQL语句改写:Case When Then When Then Else End #### 知识点一:SQL CASE WHEN THEN 结构与Access IIF及SWITCH函数对比 在进行SQL到Access SQL的转换过程中,一个重要的知识点是了解如何...

    case when和sum case when 写法及拼接字段

    这个查询通过 `SUM` 函数与 `CASE WHEN` 的组合使用,可以轻松地统计出每种订单状态的数量。 ### 拼接字段 在 SQL 中,经常需要将多个字段或值合并成一个字符串。这可以通过使用字符串连接操作符(如 `+` 或 `||`...

    sql学习之CASE WHEN THEN ELSE END的用法

    在SQL语言中,`CASE WHEN THEN ELSE END`结构是一种强大的条件判断工具,它允许你在查询中根据特定条件执行不同的逻辑。这个结构可以在`SELECT`、`WHERE`、`HAVING`、`UPDATE`和`INSERT`等语句中使用,以实现复杂的...

    sql case when exists not exists in not in

    而`IN`和`NOT IN`在处理简单条件时较为直观,但如果与子查询结合,可能会导致全表扫描,影响性能。 在进行SQL晋级学习时,理解并熟练掌握这些操作符的用法至关重要。通过不断地实践和优化,能够编写出更高效、更...

    casewhen多条件oracle-casewhen(casewhen同时满足多条件).pdf

    CASE WHEN 语句是 SQL 中的一种条件语句,用于实现多个条件的判断和执行。它可以用来代替 IF 语句和 SWITCH 语句,在 Oracle 数据库中尤其常用。 CASE WHEN 语句的基本语法是: ```sql CASE WHEN 条件 THEN 结果 ...

    oracle where case when where后面跟case when

    在Oracle数据库中,`WHERE`子句是SQL查询语句的一部分,用于指定查询条件,而`CASE WHEN`语句则是一种条件表达式,允许我们基于不同的条件返回不同的值。将`CASE WHEN`嵌套在`WHERE`子句中,可以实现更复杂的逻辑...

    详细解析 mysql 中的 case when 语句的使用

    ### MySQL中的Case When语句详解 ...此外,`CASE WHEN`还可以与其他SQL语句结合使用,比如聚合函数、子查询等,以满足更复杂的业务需求。希望本文能帮助你更好地理解和使用MySQL中的`CASE WHEN`语句。

    SQL集合函数中case when then 使用技巧

    在标题提到的“SQL集合函数中`CASE WHEN THEN` 使用技巧”中,主要讨论了如何利用`CASE WHEN THEN` 结合`COUNT()`函数在聚合查询中统计特定条件的数据。例如,如果我们要统计数据库中学生表(`student`)中不同省份的...

    sql中的case用法

    它可以用来实现复杂的逻辑操作,并且可以与其他 SQL 语句结合使用以实现更加复杂的查询。 SQL 中 Case 语句有两种格式:简单 Case 函数和 Case 搜索函数。这两种格式可以实现相同的功能,但是它们的写法和功能方面...

    SQL Server中Case 的不同用法

    在SQL Server中,CASE表达式是一种强大的工具,用于在查询中进行条件判断和逻辑操作。它的功能远不止创建新字段那么简单,而是可以在多个方面增强你的SQL查询能力。以下是对CASE关键字在SQL Server中不同用法的详细...

    SQL中case语法的使用

    ### SQL中的Case语法使用详解 在SQL查询语言中,`CASE`语句是一个非常重要的功能,它可以用来构建复杂的条件逻辑,实现对数据的灵活处理。本文将深入探讨SQL中的`CASE`语法及其应用场景。 #### 一、基本概念 `...

    SQL中Case语句用法讨论_BJ

    THEN CASE WHEN salary > 1000 THEN 1 ELSE 0 END ELSE 1 END = 1 ) ``` #### 四、注意事项 - `Case`语句的条件分支必须是互斥的,即每个输入值只能匹配一个条件。 - 如果所有`WHEN`子句都不匹配,则返回`...

    SQL经典面试题及答案 CASE

    SUM(CASE WHEN shengfu = '胜' THEN 1 ELSE 0 END) AS '胜', SUM(CASE WHEN shengfu = '负' THEN 1 ELSE 0 END) AS '负' FROM #tmp GROUP BY rq; ``` 在这个查询中,CASE语句用于将每个胜利或失败转换为1或0,...

    Oracle_case_when_用法

    在 Oracle 数据库中,`CASE WHEN` 表达式提供了一种在 SQL 查询中实现条件判断的方法,这使得开发人员能够在不使用 PL/SQL 的情况下编写更为灵活和复杂的查询语句。`CASE WHEN` 与 `DECODE()` 函数相似,但因其符合 ...

    CASE的用法 (Transact-SQL)

    ### CASE的用法 (Transact-SQL) #### 概述 `CASE` 是 Transact-SQL 中一个非常重要的...通过对 CASE 简单表达式和 CASE 搜索表达式的理解与应用,开发人员能够更加灵活高效地构建 SQL 查询,实现复杂业务逻辑的需求。

    SQLsevrer CASE用法

    THEN CASE WHEN salary > 1000 THEN 1 ELSE 0 END ELSE 1 END = 1 ); ``` 或者简化为: ```sql CONSTRAINT check_salary CHECK ( sex = '2' AND salary > 1000 ); ``` 这种用法确保了数据库的一致性和完整性...

    SQL查询动态字段

    SELECT @sql = @sql + ',MAX(CASE WHEN γ = ''' + γ + ''' THEN ELSE 0 END) [' + γ + ']' FROM (SELECT DISTINCT γ FROM tb) AS AS_ SET @sql = @sql + ' FROM tb GROUP BY ' EXEC (@sql) ``` ### SQL Server ...

    2012 SQL常用操作

    ,100 * SUM(CASE WHEN C# = '001' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '001' THEN 1 ELSE 0 END) AS 企业管理及格百分数 ,SUM(CASE WHEN C# = '002' THEN score ELSE 0 END)/SUM(CASE C# ...

Global site tag (gtag.js) - Google Analytics