UPDATE tablename SET PARENTID=(
case
WHEN LENGTH(column1)/2=1 then '0'
when LENGTH(column2)/2=2 then substr(column1,1,2)
when LENGTH(column3)/2=3 then substr(column2,1,4)
when LENGTH(column4)/2=4 then substr(column3,1,6)
end
)
select
userid,
substr(userid,
instr(',' || userid || ',', ',', 1, n),
instr(',' || userid || ',', ',', 1, n + 1) -
instr(',' || userid || ',', ',', 1, n) - 1) aa
from xt_jbpm_dbsxb, (select level n from dual connect by level <= 10) x
where substr(userid,
instr(',' || userid || ',', ',', 1, n),
instr(',' || userid || ',', ',', 1, n + 1) -
instr(',' || userid || ',', ',', 1, n) - 1) is not null
and id=77823
order by n
case
WHEN LENGTH(column1)/2=1 then '0'
when LENGTH(column2)/2=2 then substr(column1,1,2)
when LENGTH(column3)/2=3 then substr(column2,1,4)
when LENGTH(column4)/2=4 then substr(column3,1,6)
end
)
select
userid,
substr(userid,
instr(',' || userid || ',', ',', 1, n),
instr(',' || userid || ',', ',', 1, n + 1) -
instr(',' || userid || ',', ',', 1, n) - 1) aa
from xt_jbpm_dbsxb, (select level n from dual connect by level <= 10) x
where substr(userid,
instr(',' || userid || ',', ',', 1, n),
instr(',' || userid || ',', ',', 1, n + 1) -
instr(',' || userid || ',', ',', 1, n) - 1) is not null
and id=77823
order by n
本文详细解析了一条复杂的SQL更新语句,该语句通过CASE WHEN结构设置表中某字段的值,并结合了LENGTH函数与SUBSTR函数来处理不同长度的数据。此外,还展示了如何使用INSTR函数与LEVEL进行数据截取及生成序列。
1342

被折叠的 条评论
为什么被折叠?



