嗨如果以數字開頭,我想要將字母C附加到字符串。 此外,如果有任何標點然後用下劃線代替_ 例如:5-2-2-1 ==> C5_2_2_1Oracle Regexp_replace多次出現
我試過了,但我不能夠取代標點符號的多次出現。我錯過了一些簡單的事情,我無法得到它。
SELECT REGEXP_REPLACE('9-1-1','^(\d)(-),'C\1_') FROM DUAL;
嗨如果以數字開頭,我想要將字母C附加到字符串。 此外,如果有任何標點然後用下劃線代替_ 例如:5-2-2-1 ==> C5_2_2_1Oracle Regexp_replace多次出現
我試過了,但我不能夠取代標點符號的多次出現。我錯過了一些簡單的事情,我無法得到它。
SELECT REGEXP_REPLACE('9-1-1','^(\d)(-),'C\1_') FROM DUAL;
試試這個:
select (case when substr(val, 1, 1) between '0' and '9' then 'C' else '' end) ||
regexp_replace(val, '([-+.,;:'"!])', '_')
SELECT case when REGEXP_LIKE('9-1-1','^[[:digit:]]') then 'C' END
|| REGEXP_REPLACE('9-1-1', '[[:punct:]]', '_')
FROM DUAL;
[:digit:]
任何數字
[:punct:]
標點符號
,如果你有很多不同值的行,然後儘量避免正則表達式:這裏
SELECT case when substr('9-1-1',1,1) between '0' and '9' then 'C' end
|| translate('9-1-1', ',.!-', '_')
FROM DUAL;
檢查,例如: Performance of regexp_replace vs translate in Oracle?
非常感謝它!我只是想盡量減少多個功能,因爲我會通過數百萬行掃描這個 – 2014-12-02 22:39:17
@Raj A我已經添加了一些更多的信息。我不知道數百萬行 – Multisync 2014-12-02 22:59:48
非常感謝您的努力和鏈接! – 2014-12-02 23:00:57
非常感謝您的快速回復!!只是出於好奇,如果有一種方法可以在一次正則表達式函數 – 2014-12-02 22:41:07
@RajA。 。 。我不認爲有一種方法可以用一種功能來做到這一點。 – 2014-12-02 22:50:43
..嗯,我在想,如果無論如何,我們可以捕捉到不止一個角色的發生......但是它沒關係,我會用這個..再次感謝 – 2014-12-02 22:52:52