首页 > 解决方案 > 如何在字符之间选择一个字符串

问题描述

如果我的列(attribute9)包含该字段作为Pika~Chu~(040)-121-12334~pika78@pika.com我如何提取值

 contact = Pika Chu
 phone_nbr = (040)-121-12334
 email = pika78@pika.com

我写了这样的代码

regexp_replace(attribute9, '[^()[:digit:]- ]', '')       phone_nbr,
regexp_substr (attribute9,'[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}') email,
replace(SUBSTR (attribute9 ,0,(INSTR (attribute9 , '(', -1)) - 1),'~',' ')  contact

在 phone_nbr 中,我也得到了电子邮件中的所有数字(即 78)。我怎样才能在值之间提取(〜,〜)

标签: sqloracleregexp-replaceregexp-substr

解决方案


您可以使用 和 的组合来实现它SUBSTRINSTR如下所示:

SQL> SELECT
  2      REPLACE(SUBSTR(STR, 1, INSTR(STR, '~(') - 1), '~', ' ') AS CONTACT,
  3      SUBSTR(STR, INSTR(STR, '~(') + 1, INSTR(STR, '~', - 1) - INSTR(STR, '~(') - 1) AS PHONE_NBR,
  4      SUBSTR(STR, INSTR(STR, '~', - 1) + 1) AS EMAIL
  5  FROM
  6      (SELECT
  7          'Pika~Chu~(040)-121-12334~pika78@pika.com' AS STR
  8       FROM DUAL);

CONTACT  PHONE_NBR       EMAIL
-------- --------------- ---------------
Pika Chu (040)-121-12334 pika78@pika.com

SQL>

干杯!!


推荐阅读