嗨如果以数字开头,我想要将字母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