use*_*686 4 regex oracle phone-number
我对Oracle的正则表达式有疑问.我在不同的表格中有很多电话号码.现在我的任务是统一他们.所以我拿出所有的空白,下划线,弊端等等.但接下来是棘手的部分 - 起初看起来很容易.
有和没有国际代码的数字,例如0046812345678和0812345678.所以我想用'0046'替换单个(!)前导零.我认为这样^0(?=[1-9])做会有所作为,但Oracle似乎认为前瞻是没用的.
因为它会取代第一个非零数字以及将0812345678变成004612345678(因此,第一个'8'消失),所以(^0)(1|2|3|4|5|6|7|8|9)也不会做任务(或者(^01|02|03|04|05|06|07|08|09)就此而言).
我现在搜索并尝试了很长时间,但却无法想出更多的可能性.任何帮助将不胜感激.提前致谢!
您需要将第一个1-9添加到结果中,以便仅0匹配以单个开头的数字.为了保留前1-9,我们捕获它(使用括号)并将其添加到替换部分(使用\1).这似乎有效:
select regexp_replace('0812345678', '^0([1-9])', '0046\1') from dual;
Run Code Online (Sandbox Code Playgroud)
结果: 0046812345678
| 归档时间: |
|
| 查看次数: |
2276 次 |
| 最近记录: |