oracle 用正则匹配where 每个独立条件

愤怒的小妈 2014-08-01 09:47:16
比如:where d.t1 btween 1 and 2 and a.txt=b.txt and (a.m=b.n and c.txt=d.txt ) and b.txt=d.txt and d.t between 1 and 2
匹配出结果:
d.t1 btween 1
a.txt=b.txt
(a.m=b.n and c.txt=d.txt )
b.txt=d.txt
d.t between 1 and c

匹配出 where 后面 or 与 and 的条件,括号内作为一个整体


分数不多,求大神帮忙
...全文
334 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
愤怒的小妈 2014-08-01
  • 打赏
  • 举报
回复
引用 3 楼 wildwave 的回复:
你要按and来区分,又得忽略between后面的,还有()里面的 用正则挺有难度的,还容易出错。不如写个函数来整理
找了一个 (?<!\([^)]*)(and|or)(?![^(]*\))这样的。可惜在 oracle中无法使用
愤怒的小妈 2014-08-01
  • 打赏
  • 举报
回复
引用 3 楼 wildwave 的回复:
你要按and来区分,又得忽略between后面的,还有()里面的 用正则挺有难度的,还容易出错。不如写个函数来整理
那反过来,用正则将这些 AND OR 替换掉一个特殊 ${V} 来分割 。正则会不会好写一点
小灰狼W 2014-08-01
  • 打赏
  • 举报
回复
你要按and来区分,又得忽略between后面的,还有()里面的 用正则挺有难度的,还容易出错。不如写个函数来整理
愤怒的小妈 2014-08-01
  • 打赏
  • 举报
回复
引用 1 楼 wildwave 的回复:
逻辑有点复杂。写个存储过程来判断吧
真不能用 正则来实现呀
小灰狼W 2014-08-01
  • 打赏
  • 举报
回复
逻辑有点复杂。写个存储过程来判断吧
小灰狼W 2014-08-01
  • 打赏
  • 举报
回复
我指的不是and /or ,而是分割规则。如果你按规则提前将用来分割的and/ or用特殊符号代替,那么连正则都可以不用,直接replace掉就好了

17,140

社区成员

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

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