我是新来的REGEXP_REPLACE()
。我想将0
替换为'-'
位,例如:30000000176215001500
我们得到3-176215001500
我尝试使用regexp_replace('30000000176215001500','([0])','-')
,但是它将所有0
更改为-
。
这是我的期望:
30000001174934177910
:3-1174934177910
30000000174934177910
:3-174934177910
301873130520
:3-1873130520
300173130520
:3-173130520
答案 0 :(得分:5)
考虑:
regexp_replace(mycol,'0+','-', 1, 1)
Rationale:第五个参数大于0时,指定应替换出现的位置;设置为0时,所有出现的事件都将被替换。
原始正则表达式的其他显着变化:
with a as (
select '30000001174934177910' mycol from dual
union all select '30000000174934177910' from dual
union all select '301873130520' from dual
union all select '300173130520' from dual
)
select mycol input, regexp_replace(mycol,'0+','-', 1, 1) output from a
INPUT | OUTPUT :------------------- | :-------------- 30000001174934177910 | 3-1174934177910 30000000174934177910 | 3-174934177910 301873130520 | 3-1873130520 300173130520 | 3-173130520