2017-08-31 42 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

当然我明白了.. –

相关问题