有一组数据
A1 A2
qwr 2
gssdg 3
df 9
gdg 8
fd 4
写一个view,想实现一个功能,当A1含有g的时候,把A2设置为0. 当A1含有f的时候,设置A2为00.其余就是本来的A2。两个条件不会同事出现的,这种情况不用考虑。
7 个解决方案
#1
select A1,(case when A1 like '%g%' then 0
when A1 like '%f%' then 00
else A2 end) A2 from tab
#2
-- decode 函数不能用 like ,也不能比较范围值,只能对比具体值!
-- 要用 like 或 where ... between ... and 的话,只能考虑用 case ... when 代替!
-- 要用 like 或 where ... between ... and 的话,只能考虑用 case ... when 代替!
#3
不能用like 可以考虑instr
但是需要注意 decode只能判断一个值 也就是 一般都是判断 如果存在f 怎么怎么办
可以试试 || 一起判断俩值~~
当然 还是case比较方便~
但是需要注意 decode只能判断一个值 也就是 一般都是判断 如果存在f 怎么怎么办
可以试试 || 一起判断俩值~~
当然 还是case比较方便~
#4
楼上说得很对
#5
+1
#6
虑用 case ... when 代替
#7
不能用like的表一个对比的值
#1
select A1,(case when A1 like '%g%' then 0
when A1 like '%f%' then 00
else A2 end) A2 from tab
#2
-- decode 函数不能用 like ,也不能比较范围值,只能对比具体值!
-- 要用 like 或 where ... between ... and 的话,只能考虑用 case ... when 代替!
-- 要用 like 或 where ... between ... and 的话,只能考虑用 case ... when 代替!
#3
不能用like 可以考虑instr
但是需要注意 decode只能判断一个值 也就是 一般都是判断 如果存在f 怎么怎么办
可以试试 || 一起判断俩值~~
当然 还是case比较方便~
但是需要注意 decode只能判断一个值 也就是 一般都是判断 如果存在f 怎么怎么办
可以试试 || 一起判断俩值~~
当然 还是case比较方便~
#4
楼上说得很对
#5
+1
#6
虑用 case ... when 代替
#7
不能用like的表一个对比的值