我有一个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%
答案 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