2012-12-14 123 views
2

我想擦掉一些地址目录,这些地址目录最初是用户输入的,以便以后处理。在去除数字和特殊字符,现在我有这样的字符串:Oracle正则表达式删除小字

ST SOMETHING SOMEWHERE H BL D S 

所以,ST代表街道,H房屋等..并不想成为超精密这里,所以我只是在3消除任何chars现在已经足够了,但我似乎无法在Oracle中找到正确的正则表达式。曾尝试:

SELECT 
    regexp_replace('ST SOMETHING SOMEWHERE H BL D S','[\ ^]\w{1,3}[\ $]', ' ') 
FROM dual; 

这将产生:

ST SOMETHING SOMEWHERE BL S 

,我希望我只有

SOMETHING SOMEWHERE 

可能有人伸出援助之手?

(我上的Oracle 11g)

+0

我不记得了甲骨文的正则表达式的确切语法替换功能,但我想你想要一个全球替代。 – 2012-12-14 20:36:21

+1

谢谢,将检查那 – filippo

+0

虽然确实有一个作弊表定义全局替换(http://psoug.org/snippet/Regular-Expressions--Regexp-Cheat-Sheet_856.htm)REGEXP_REPLACE似乎并不接受这参数(http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions130.htm) – filippo

回答

0

尝试

SELECT 
    regexp_replace(
     '<raw string>' 
    ,'(^|[[:space:]])([^[:space:]]{1,3}[[:space:]]+)*[^[:space:]]{1,3}([[:space:]]|$)' 
    , ' ' 
) 
FROM dual; 

希望将满足您的需求,问候,卡斯滕