select * from rfid_v_records t where gxsj = to_date('2011-1-1','yyyy-MM-dd')
and
case
when substr(licenseplate,length(licenseplate),length(licenseplate)+1) in('1','3','5','7','9')
then mod(to_number(substr(licenseplate,length(licenseplate),length(licenseplate)+1)),2)(这里缺失关键字)=1
end
and
case
when substr(licenseplate,length(licenseplate),length(licenseplate)+1) in('1','3','5','7','9')
then mod(to_number(substr(licenseplate,length(licenseplate),length(licenseplate)+1)),2)(这里缺失关键字)=1
end
and substr(licenseplate,length(licenseplate),length(licenseplate)+1) in('1','3','5','7','9')
and mod(to_number(substr(licenseplate,length(licenseplate),length(licenseplate)+1)),2) = 1这样写 where 条件不是一样满足要求吗
是这样的
select * from rfid_v_records t where gxsj = to_date('2011-1-1','yyyy-MM-dd')
and
case
when substr(licenseplate,length(licenseplate),length(licenseplate)+1) in('1','3','5','7','9')
then mod(to_number(substr(licenseplate,length(licenseplate),length(licenseplate)+1)),2)(这里缺失关键字)=1
when 另一种情况 then 返回值
when 另一种情况 then 返回值
end
1. 你 case when 放在 where 条件以后,你的各个分支,实际就是一种满足条件的匹配形式,那么你可以简洁的写成
where (条件1(第一个 when then) or 条件2(第二个 when then))
2. 你非要写成 case when 也没有问题,但是你最后必须是一个条件判断形势
所以你需要将 case when 用一个()包含起来,然后将所有允许的返回值进行判断,例如
where (case when 条件1 then 返回值1
when 条件2 then 返回值2
end) in (返回值1, 返回值2)