select * from cms_con_duebill a
where 1=1
and (case when 1=1 then
case a.duebillid='1'
else 1=1 end);
这个不行啊 我就想where 后面加case语句
where 1=1
and (case when 1=1 then
case a.duebillid='1'
else 1=1 end);
这个不行啊 我就想where 后面加case语句
解决方案 »
- 求两个日期之间的月份数(急)
- 求insert语句
- 如何恢复这样的数据库
- 安装oracle 时自动创建的数据库与配置oms 时创建的数据库有何区别。
- 我遇到了toad的启动问题,toad一闪就没了
- 各位大侠,请问如何将Access数据库中的数据导入到Oracle数据库中
- 关于dbms_random的问题,请大家帮忙!
- 对方只给一个.dmp文件,请问能否用Oracle导入工具读出数据库。在线求救。。。
- 报错请指点解决问题
- vs 2012 连接数据库时出现的错误:尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracl
- oracle
- 问个动态交叉表的写法
where 1=1
and a.duebillid = (case when 1=1 then '1' else '0' end) ;
case a.duebillid='1'
else 1=1 end);2个CASE,一个END?结束的是哪个CASE?是不是语法有问题>
2、case既是函数,所以只能以表达式方式调用。
like ''%''||:pCustomerName||''%''
else then 1=1 end' ;
这个怎么整 有 like 语句的
CASE WHEN是标准SQL语法,可以用在SQL语句里,并且只要遵循标准SQL语法的数据库就能通用
DECODE是ORACLE自己的函数,只适用于ORACLE
如一楼就行了
case when以及decode也是不行的,因为 多值判断函数是函数,不是表达式,它只能以表达式的方式调用,而且不能以判断条件的方式调用。也就是在单条sql语句中,case when以及decode函数只能出现select 和 from tablename之间,不能出现在where或者on后面。
我们经常这样用的select
from a
where
a.id=decode(:in_id,0,a.id,:in_id)
表示传进去的参数是0的话,则是查全部纪录,否则是指定值
也可以用CASE whena.id=
case
when :in_id=0
then a.id
else :in_id
end
效果是一样
可以看出DECODE简洁,但不是通用SQL
另外DECODE不支持OR AND 条件 如:in_id=0 or :in_id=999999,当然也是可以实现,就是一个个判断
另外DECODE不支持>,<等等
只能通过列多个选项,或者通过SIGN函数来实现