【发布时间】:2018-08-24 05:25:13
【问题描述】:
我想使用 case 语句和正则表达式组合来格式化以下格式的电话号码
+1 (111) 111-1111 到 111-111-1111
并且当第一个大括号(c)之后的位数不等于 10 时,则 null else 按原样填充
能否请您提供一些有用的 Oracle 正则表达式函数来处理这个问题
谢谢
【问题讨论】:
-
我不知道源格式是什么,他想要的格式是什么。
-
这是否意味着数字总是有一对括号?如果输入的格式已经是 343-999-3333 怎么办?
-
这是一个很好的问题,如果输入已经是预期的格式,我必须填充相同的值。如果是 343-999-3333 输出应该是 343-999-3333
-
好的,让我们重新表述这个问题。您可以使用太多数字的无效电话号码吗?例如:一种方法可能是计算数字(同时忽略其他所有内容)。如果总数少于 10 位,则返回 NULL。否则,只需根据模型 111-111-1111 格式化最后十个 DIGITS。这对你有用吗?正如您现在提出的问题,(111) 111-1111 将保持原样,不会转换为 111-111-1111。这就是你想要的吗?
-
另外 - 你的电话号码可以有分机吗?例如,111-111-1111 分机。 2348?或者您是否有单独的扩展字段? (这将是更好的方法。)