pl sql代码拆分邮箱和手机号码
plsql code to Split Email and moblie number
我需要代码来拆分存储在单列中的电子邮件和手机号码,并将其存储在两个集合变量中以发送短信和电子邮件。请注意,电子邮件和手机号码将合并并存储在单个 column/variable 中,以逗号
分隔
更新代码以同时显示邮件和手机号码。
DECLARE
l_str VARCHAR(150) := 'adsf@qewr.com, uiohljkh@uiyhjn.com, +7(800)800-80-80, +7(900)900-90-90';
l_pattern_email VARCHAR(500) := '[a-zA-Z0-9._%-]+@[a-zA-Z0-9._%-]+\.[a-zA-Z]{2,4}';
l_pattern_phone VARCHAR(500) := '+[0-9]\([0-9]{3}\)([0-9]{3})-[0-9]{2}-[0-9]{2}';
TYPE tp_emails_col_typ IS TABLE OF VARCHAR(100);
TYPE tp_phone_col_typ IS TABLE OF VARCHAR(100);
l_emails_col tp_emails_col_typ;
l_phone_col tp_phone_col_typ;
BEGIN
SELECT REGEXP_SUBSTR( l_str, l_pattern_email, 1, LEVEL ) BULK COLLECT INTO l_emails_col
FROM (
SELECT l_str FROM dual
)
CONNECT BY LEVEL <= REGEXP_COUNT(l_str, l_pattern_email);
IF l_emails_col.count > 0 THEN
FOR idx IN l_emails_col.first..l_emails_col.last LOOP
dbms_output.put_line( l_emails_col(idx) );
END LOOP;
END IF;
SELECT REGEXP_SUBSTR( l_str, l_pattern_phone, 1, LEVEL ) BULK COLLECT INTO l_phone_col
FROM (
SELECT l_str FROM dual
)
CONNECT BY LEVEL <= REGEXP_COUNT(l_str, l_pattern_phone);
IF l_phone_col.count > 0 THEN
FOR idx IN l_phone_col.first..l_phone_col.last LOOP
dbms_output.put_line( l_phone_col(idx) );
END LOOP;
END IF;
END;
我需要代码来拆分存储在单列中的电子邮件和手机号码,并将其存储在两个集合变量中以发送短信和电子邮件。请注意,电子邮件和手机号码将合并并存储在单个 column/variable 中,以逗号
分隔更新代码以同时显示邮件和手机号码。
DECLARE
l_str VARCHAR(150) := 'adsf@qewr.com, uiohljkh@uiyhjn.com, +7(800)800-80-80, +7(900)900-90-90';
l_pattern_email VARCHAR(500) := '[a-zA-Z0-9._%-]+@[a-zA-Z0-9._%-]+\.[a-zA-Z]{2,4}';
l_pattern_phone VARCHAR(500) := '+[0-9]\([0-9]{3}\)([0-9]{3})-[0-9]{2}-[0-9]{2}';
TYPE tp_emails_col_typ IS TABLE OF VARCHAR(100);
TYPE tp_phone_col_typ IS TABLE OF VARCHAR(100);
l_emails_col tp_emails_col_typ;
l_phone_col tp_phone_col_typ;
BEGIN
SELECT REGEXP_SUBSTR( l_str, l_pattern_email, 1, LEVEL ) BULK COLLECT INTO l_emails_col
FROM (
SELECT l_str FROM dual
)
CONNECT BY LEVEL <= REGEXP_COUNT(l_str, l_pattern_email);
IF l_emails_col.count > 0 THEN
FOR idx IN l_emails_col.first..l_emails_col.last LOOP
dbms_output.put_line( l_emails_col(idx) );
END LOOP;
END IF;
SELECT REGEXP_SUBSTR( l_str, l_pattern_phone, 1, LEVEL ) BULK COLLECT INTO l_phone_col
FROM (
SELECT l_str FROM dual
)
CONNECT BY LEVEL <= REGEXP_COUNT(l_str, l_pattern_phone);
IF l_phone_col.count > 0 THEN
FOR idx IN l_phone_col.first..l_phone_col.last LOOP
dbms_output.put_line( l_phone_col(idx) );
END LOOP;
END IF;
END;