oracle中update语句中怎么高效的根据idStr(多个id以逗号,隔开)进行更新

主键id 是varchar2类型 且表中的数据比较多 用like效率很低 有存储过程游标cursor会不会也很慢啊
望大神指教啊!

建议先将idStr(多个id以逗号,隔开)转成集合方式,比如a,b,c,d,e,先把它们转换成
a
b
c
d
e
这样的,再用in操作
例如:
update tab set ...=... where id in (select * from (SELECT REGEXP_SUBSTR('a,b,c,d,e', '[^,]+', 1, LEVEL, 'i') str FROM DUAL CONNECT BY LEVEL <= 10) where str is not null)追问

用in效率不是会很低吗? 而且in中的字符不是有限制吗 并且我的id是varchar2 类型的

追答

在这里效率不会低的,起码比你like方法强

追问

用in不是会全表检索吗?那还不如用存储过程游标一个一个循环update嗯

温馨提示:答案为网友推荐,仅供参考
相似回答