2013-04-23 44 views

回答

2

由于您已经用sql标记了问题,下面是我可以提出的代码。

REPLACE 
    (search_string, 
REGEXP_SUBSTR 
    (search_string, 
    '([[:alpha:]]+|^|[[:space:]])0+([[:alpha:]]+|$|[[:space:]])' 
    ), 
TRANSLATE 
    (REGEXP_SUBSTR 
     (search_string, 
     '([[:alpha:]]+|^|[[:space:]])0+([[:alpha:]]+|$|[[:space:]])' 
     ), 
    '0', 
    'O' 
    ) 
    ) 

这是输出。它适用于您的输入案例。也许我错过了其他一些可能性。

R0OSEVELT --> ROOSEVELT 
100 RO00SEVELT --> 100 ROOOSEVELT 
0RANGE10 --> ORANGE10 
PALT00OO --> PALTOOOO 
RO00SEVELT 100 --> ROOOSEVELT 100 
RANGE10 --> RANGE10 
RANGE0 --> RANGEO 
+0

真棒诺埃尔..谢谢很多..似乎解决所有的选择..伟大的工作!再次感谢您的时间和帮助。 – 2013-04-24 14:31:39

+0

嗨诺埃尔其实这个10 0K00LS00O不工作? – 2013-04-24 15:06:05

+0

它看起来只有第一次出现的0被替换。 – Noel 2013-04-25 03:10:15

1

不指定会发生什么一个零站在自己的,但是:

sed -E 's/([[:alpha:]])?0([[:alpha:]])/\1O\2/g; s/([[:alpha:]])0([[:alpha:]])?/\10\2/g' 

会做你没有指定作业的一部分。 如果第一个替换命令位于两个字母字符之间,或者至少后面跟着字母字符(即字开头),则用字母'O'替换零。第二个与词尾相同。

+0

如何在SQL语句中实现?我没有得到它 – 2013-04-24 14:37:17

相关问题