存储过程中的in语句问题

小灯光环
博客专家认证
2016-05-19 09:11:17


上图的num_是是varchar2类型,在表中存的值是1,2,3这种的逗号分割的,直接放到in语句查不出来,是不是因为sql变成了这样:
...in('1,2,3')而不是in(1,2,3)呢?

这里怎么处理比较好,是拆分 再拼接还是~ 求助~
...全文
154 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ghx287524027 2016-05-19
  • 打赏
  • 举报
回复
拆分,最好是可以改成 in ('1','2','3') 这种形式
Z_B_Hrunqian 2016-05-19
  • 打赏
  • 举报
回复
改成下面试下 and exists( SELECT 1 FROM ( SELECT regexp_substr(everyrow.num_,'[^,]+',1,LEVEL) numid FROM dual CONNECT BY LEVEL <= length(regexp_replace(everyrow.num_,'[^,]+')) +1 ) s where s.numid=hjdoornum_)
ORAClE SE 2016-05-19
  • 打赏
  • 举报
回复
楼主理解正确,把值按逗号拆分出来
卖水果的net 2016-05-19
  • 打赏
  • 举报
回复
2#,4#,都可以的,2#建议和regexp_count配合使用。
liuzhe_521 2016-05-19
  • 打赏
  • 举报
回复
改成如下: hjdoornum_ in (select trim(column_value) from xmltable(replace('"'||everyrow.num_||'"', ',', '","')))

17,078

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧