2017-08-31 64 views
0

我已經閱讀了所有的REGEXP_REPLACE文檔,但沒有找到任何我期待的內容。我想將兩個元音之間的特定字符替換爲另一個字母。SQL Oracle - 在兩個元音之間替換字符串

實施例:

字符串:abcdeZebca 輸出:abcdeSebca

字母Z被S代替,導致其是兩個元音之間。這在SLQ Oracle中可能嗎?

+2

清除泥漿。字符b(以及c和d)在兩個元音a和e之間。 (你不能不同意,對不起:** a ** bcd ** e ** ...; b,c和d在a和e之間)也許你是指兩個元音之間立即?那麼:「特定」(你可能是指「特定」或「指定」)字符從哪裏來?他們在桌子上嗎?他們是用戶輸入嗎?等等,他們應該換成什麼?一個例子並不構成問題規範。 – mathguy

回答

3

我猜你沒趕上位有關雖然文檔反向引用:

SELECT 
    REGEXP_REPLACE(yourcolumn, '([aeiou])Z([aeiou])', '\1S\2') 
FROM 
    yourtable 

解釋:

[aeiou]同時匹配手段任何單個元音。將它括在括號中意味着「並記住你在一個編號插槽中發現了什麼,從1開始」在整個表達式中從左向右編號 - 每個(括號表達式)都有自己的編號

因此,完整表達方式: - 發現在插槽1 任何元音和商店 - 隨後由Z - 隨後在槽的任何元音和存儲2

替換字符串是: - S - - 的時隙1 內容的內容插槽2

因此

aZe -> aSe 
eZi -> eSi 

等等..

+0

你應該用'.'替換'Z'以匹配2個元音之間的任何字符。 –

+0

他說他想替換兩個元音之間的特定字符,而不是任何字符。我最初的想法是他想把americaniZed英文單詞改成angliciSed版本..如果你認出我的意思是:) –

+0

當然我明白了.. –

相關問題