仅从VARCHAR列中提取字母字符

时间:2014-03-31 11:35:53

标签: sql regex oracle oracle11g oracle9i

我有一个VARCHAR2类型的列,其中包含'12-MAR-2014,,1234,DATA,VALUE,12/03/14,,124,End'这样的文字。我需要输出'%DATA%VALUE%End%'。即由逗号','分隔的文本。只需要选择字母表,省略日期或数字或特殊字符。像,

select some_function('12-MAR-2014,,1234,DATA,VALUE,12/03/14,,124,End') as output from dual;

OUTPUT
---------
%DATA%VALUE%End%

修改

需要保留字母数字值的另一个附加要求:

select some_function('12-MAR-2014,,1234,DATA65,VALUE,12/03/14,,124,End') as output from dual;

OUTPUT
---------
%DATA65%VALUE%End%

2 个答案:

答案 0 :(得分:1)

您可以使用regexp_replace()。我认为表达式是这样的:

select regexp_replace(col, '([^a-zA-Z]+)', '%')

不幸的是,我现在无法测试(并且SQL Fiddle已关闭)。

答案 1 :(得分:1)

这样的事可能会对你有所帮助:

select regexp_replace('12-MAR-2014,,1234,DATA,VALUE,12/03/14,,124,End','[[0-9]{2}-(JAN|FEB|MAR|APR|JUN|JUL|AUG|SEP|OCT|NOV|DEC)-[0-9]{4}]*|[^a-zA-Z]+|$','%') from dual