【发布时间】:2020-01-09 03:56:15
【问题描述】:
我有一个 RegExp 如下,当我在 Oracle SQL 中使用它时,出现 ORA-12723 错误,我怎样才能让它以最短的格式显示?
WITH test_data ( str ) AS (
SELECT 'This is extension 1234, here is mobile phone: 090-1234-5678 maybe 8+24-98765432. Then +1-(234)-090-345 also 86 21-4566-4556' AS str FROM DUAL
)
SELECT TRIM(
TRAILING ',' FROM
REGEXP_REPLACE(
str,
'.*?(\+?\d{1,11}[-,\+]\d{1,11}[-,\+]\d{1,11}[-,\+]\d{1,11}[-,\+]\d{1,11}[-,\+]\d{3,11}|\+?\d{1,11}[-,\+]\d{1,11}[-,\+]\d{1,11}[-,\+]\d{1,11}[-,\+]\d{3,11}|\+?\d{1,11}[-,\+]\d{1,11}[-,\+]\d{1,11}[-,\+]\d{3,11}|\+?\d{1,11}[-,\+]\d{1,11}[-,\+]\d{3,11}|\+?\d{1,11}[-,\+]\d{3,11}|\d{3,11}|$)',
'\1,'
)
) AS replaced_str
FROM test_data
我想知道的结果如下:
1234,090-1234-5678,8+24-98765432,+1-(234)-090-345,86 21-4566-4556
【问题讨论】:
-
你想用你的正则表达式实现什么?
-
一些匹配看起来如何?
-
我想匹配所有不同格式的电话号码,它们可以是 3-11 位数字,数字之间有其他字符。
-
select regexp_substr与您的正则表达式在我的 oracle 中为我工作。你有什么版本的 oracle,你用什么命令来应用正则表达式? -
我更新了我的问题,你能帮帮我吗?
标签: oracle regexp-replace regexp-substr