oracle 正则表达式问题

chenzhengcan 2010-02-26 03:51:40
CREAT TABLE TMP_DATACOLLTALE_32 ASSELECT * FROM TF_TELE_OBJECTS OO WHERE OO.OBJECT_STATE=1 IF(1=1 AND [.evalue] >0 AND [.evalue]<=1800 AND [.IS_HFZJ]=1)THEN /*ACTION*/ END IFEND

怎么通过oracle的正则表达式来特换[.]或[] 中间的值,并去掉[.]~~
哪位大侠救命下~~



...全文
112 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
fxianxian 2010-02-28
  • 打赏
  • 举报
回复
SQL> select regexp_replace('AND  [.evalue] >0  AND [.evalue] <=1800      AND [.IS_HFZJ]=1)THEN','[[[|.]|[]]]*','')
2 from dual
3 /

REGEXP_REPLACE('AND[.EVALUE]>0
---------------------------------------------------------
AND evalue >0 AND evalue <=1800 AND IS_HFZJ=1)THEN
YY_MM_DD 2010-02-27
  • 打赏
  • 举报
回复


----的确不错....ls的XD
Connected to Oracle Database 11g Enterprise Edition Release 11.1.0.7.0
Connected as billing


SQL> select regexp_replace('[.evalue] >0 AND [.evalue] <=1800 AND [.IS_HFZJ]=1','(\[\.)(\w*)(\])','\2') from dual;

REGEXP_REPLACE('[.EVALUE]>0AND
-----------------------------------------
evalue >0 AND evalue <=1800 AND IS_HFZJ=1

SQL>
sohua 2010-02-26
  • 打赏
  • 举报
回复
select regexp_replace('AND [.evalue] >0 AND [.evalue] <=1800 AND [.IS_HFZJ]=1)THEN','(\[\.)(\w*)(\])','\2') from dual;
---------------
AND evalue >0 AND evalue <=1800 AND IS_HFZJ=1)THEN
sohua 2010-02-26
  • 打赏
  • 举报
回复
对于你上面的内容查找(\[\.)(\w*)(\]),替换成\2。
的结果是

CREAT TABLE TMP_DATACOLLTALE_32 ASSELECT * FROM TF_TELE_OBJECTS OO
WHERE OO.OBJECT_STATE=1 IF(1=1 AND evalue >0 AND evalue <=1800 AND IS_HFZJ=1)THEN /*ACTION*/ END IFEND
sohua 2010-02-26
  • 打赏
  • 举报
回复
(\[\.)(\w*)(\])可以匹配[.xxxx],xxxx可以是任意字母数字。

比如要把[.evalue] 和 [.IS_HFZJ] 都替换成abc。那么在emeditor等支持正则表达式的文本编辑器里面。
查找(\[\.)(\w*)(\]),替换成abc就行了。

如果只是希望去掉两边的[.],里面的内容保留。
查找(\[\.)(\w*)(\]),替换成\2。\2代表第二个小括号里面的东西。

17,088

社区成员

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

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