SQL 中 where 条件中 in 后面 加 CASE WHEN 语句 报错

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL 中 where 条件中 in 后面 加 CASE WHEN 语句 报错相关的知识,希望对你有一定的参考价值。

select new_projectsize, count(cifno)
from (select distinct (a.cifno) as cifno,
b.new_projectsize as new_projectsize
from cr_xdall a, cr_corp_inf b
where substr(a.mon_date, 1, 6) = '201212'
and xdflag = '1'
and opn_br_no in
(case when '1' = '1' then
(select brno from poozfmessagebrno where upbrno = '56601') else
'50000' end)
and a.cifno = b.cifno
and bal != '0'
group by b.new_projectsize, a.cifno)
group by new_projectsize;

.....老大看清楚你用的有问题,=是赋值不是判断==才是判断,'1' = '1'把一个字符串赋值给另一个字符串没有意义,而且似乎也不符合语法啊,这种错误似乎很低级,我这里没有现成的调试工具,你改了这个错误看看,如果还有把错误贴一下
CASE WHEN 语句 报错 可能就是因为你给了一个错误的判断条件,他的结果也不是一个布尔值啊来自:求助得到的回答
参考技术A case语句只能代表一个值,如果你的select brno from poozfmessagebrno where upbrno = '56601'语句中返回多个值的话就会报错喽追问

我现在想要得到多个值,在in里做条件,该如何实现此方案

追答

那就看你为什么用case了,如果只是做选择的话,可以用if else写两组语句进行切换

本回答被提问者采纳
参考技术B and opn_br_no in
(case when '1' = '1' then
(select brno from poozfmessagebrno where upbrno = '56601') else
'50000' end)

修改为:

and opn_br_no in
( select
case when '1' = '1' then brno else '50000' end
from
poozfmessagebrno
where upbrno = '56601'
)
参考技术C 先将select brno from poozfmessagebrno where upbrno = '56601'结果赋值给一个变量再去试一下语句

sql中,In和where的区别是什么

where也能查询多条语句吧?

那IN的主要功能就是查询多条=?是这个意思吗

SQL 语句中In 和 Where 的含义不同。
应用解释如下:

1、如需有条件地从表中选取、删除、更新数据时,使用Where;
2、In只作为Where条件子句下的一个运算符,除了In之外还有Between、Like、=、>、>=、<、<=等运算符。
下面举例说明:
1、查询名字为A和B的学生,则语句为
Select * from student where name in(\'A\',\'B\');
参考技术A SQL
语句中In

Where
的含义不同。
应用解释如下:
1、如需有条件地从表中选取、删除、更新数据时,使用Where;
2、In只作为Where条件子句下的一个运算符,除了In之外还有Between、Like、=、>、>=、<、<=等运算符。
下面举例说明:
1、查询名字为A和B的学生,则语句为
Select
*
from
student
where
name
in('A','B');
参考技术B in可以进行模糊查询,可以在in前面添加条件.在大的范围内进行查询,举个最简单的例子,比如查询没被学生选的课.就只能用in或者exist写嵌套.而where就是一个简单的条件语句,只能用来写简单的条件语句.虽然也可以写嵌套可是条件只能写简单明了的. 参考技术C where表明where后面的语句是查询条件,如果有查询条件必须以where开始
in表明in后面的是枚举值或者查询结果集,属于查询条件的一种
参考技术D in一般用来查一个数组或者举例值的,where的范围更广点。其实你对in的解释是对的。

以上是关于SQL 中 where 条件中 in 后面 加 CASE WHEN 语句 报错的主要内容,如果未能解决你的问题,请参考以下文章

SQL查询语句中,为啥在WHERE后面查询条件有的要加单引号,有的不用加,啥时候加,啥时候不加?

在sql的where条件下怎么加判断语句?

sql中where 之后怎么加if条件判断

SQL 左外连接后还能加where不

腾讯一面问我SQL语句中where条件为什么写上1=1

db2中sql语句的where从句 不等于怎么写