【发布时间】:2013-08-02 20:59:35
【问题描述】:
我有一个类似
的字符串with xx as (
select 'id9' idno,'untest X456789,W357987 and Q321089 cont group' test from dual)
select * from xx
有一些像下面这样的行
IDNO | TEST
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
id9 | untest X456789,W357987 and Q321089 cont group
我想提取以字母开头后跟 6 位数字的单词。另外,它们之间应该有一个逗号(因为稍后我会将它们放在多行中)
结果表:
IDNO | TEST
+++++++++++++++++++++++++++++++++++++++++
id9 | X456789,X321678,W357987,Q321089
我尝试了regexp_replace,但无法找到解决方案。
select idno, REGEXP_replace( test,'([^[A-Z]{1}[:digit:]{6},?])') AS test from xx
【问题讨论】:
-
你确定你的数据库已经规范化了吗?
-
这是一个有意去规范化的OLAP环境。 (更少的连接,更简洁的代码)。上表是从第三方机构收到的,遗憾的是我们没有机会根据需要对其进行格式化。
-
这是可以的,只要它是有目的的而不是因为对规范化的理解不足。祝你好运! :)
标签: sql regex oracle11gr2