2013-04-23 43 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

相關問題