我的数据结构如下:
0-大分类编号-二分类编号-三分类编号:大分类名-二分类名-三分类名
例如:
0-103-1508:时尚家电-电器附件
0-320-1414-1474:厨卫清洁-一次性用品-垃圾袋1
0-320-1414-1469-1471:厨卫清洁-一次性用品-保鲜膜1-保鲜袋1现在,我要取出二分类名(例如第一条取出:家电附件,第二条取出:一次性用品,第三条取出:一次性用品),用oracle正则该怎么写比较简洁?
0-大分类编号-二分类编号-三分类编号:大分类名-二分类名-三分类名
例如:
0-103-1508:时尚家电-电器附件
0-320-1414-1474:厨卫清洁-一次性用品-垃圾袋1
0-320-1414-1469-1471:厨卫清洁-一次性用品-保鲜膜1-保鲜袋1现在,我要取出二分类名(例如第一条取出:家电附件,第二条取出:一次性用品,第三条取出:一次性用品),用oracle正则该怎么写比较简洁?
解决方案 »
- OCCI查询时getstring不能获取长字符串
- join表中 count的sql该如何写
- imp 导入 oracle 问题
- ORACLE数据库的表新增一条记录,如何在SQL数据库表中也新增一条?
- 关于sql*loader导入excel文件的问题
- 帮忙修改这段ASP调用ORACLE的输出值。
- 关于数据插入的问题(oracle8)
- 各位在线的朋友,请帮个忙,我的数据库的没了,急死了!!!
- 插入语句如何写?
- 求助!我安装完oracle应用程序开发工具后进入Oracle9i Designer或Repository Object Navigator等工具时,需要输入登陆:username,passwo
- oracle11g如何在客户端备份数据库
- 有谁能帮忙由优化这个sql,多谢啦。
http://blog.csdn.net/tianlesoftware/archive/2009/11/12/4799552.aspx
------------------------------------------------------------------------------
Blog: http://blog.csdn.net/tianlesoftware
网上资源: http://tianlesoftware.download.csdn.net
相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx
Q Q 群:62697716
select '0-103-1508:时尚家电-电器附件' a from dual
union all select '0-320-1414-1474:厨卫清洁-一次性用品-垃圾袋1' from dual
union all select '0-320-1414-1469-1471:厨卫清洁-一次性用品-保鲜膜1-保鲜袋1' from dual
)
select ltrim(regexp_substr(a,'(-)(\w+)',instr(a,':')),'-') from tt或者
select regexp_replace(substr(a,instr(a,'-',instr(a,':'),1)+1),'-[[:graph:]]*') from tt
这样也行
看看有没有更简单的写法
\w 匹配包括下划线的任何单词字符。等价于'[A-Za-z0-9_]'
但是,现在明显能匹配中文,这是什么原因呢?
select regexp_replace(a, '(.*:)(\w+-)(\w+)(.*)', '\3') from tt;还请能帮我回答为什么能匹配中文的问题,谢谢!
/w 的说明中没有明确提到是否能匹配中文的问题,但试验结果是可以匹配,如果觉得不保险,可以改成
select regexp_replace(a, '(.*:)([^-]+-)([^-]+)(.*)', '\3') from tt;