繁体   English   中英

过程pl sql

[英]procedure pl sql

我正在尝试使用过程在某些行中添加一些特殊字符。 我需要在电话号码之间添加括号。数据库由电话号码列组成。

如果电话号码是:9999999999

现在我想在此电话号码中添加方括号:

(999)(999)(9999)

如果电话号码已经放在方括号中,则不应对此进行任何更改。

CREATE OR REPLACE PROCEDURE Phoneno
AS
BEGIN
UPDATE PERSON
SET PHONE# = "here i want to add brackets to phone numbers"
END;
/

我应该在设置的电话条件下写些什么,以便可以在电话号码中添加方括号。

您可以使用字符串操作构造此对象,并使用case来查看它们是否必要:

(case when phone like '%(%' then phone
      when length(phone) <> 10 then phone
      else '(' || substr(phone, 1, 3) || ')(' || substr(phone, 4, 3) || ')(' || substr(phone, 7, 4)
 end)

您可能会考虑以下另一种选择; 我要删除括号(如果存在的话),然后使用正则表达式格式化输出:

SQL> WITH test (phone)
  2       AS (SELECT '9999999999' FROM DUAL
  3           UNION
  4           SELECT '(123)4567890' FROM DUAL
  5           UNION
  6           SELECT '9874(234)123' FROM DUAL
  7           UNION
  8           SELECT '(123)(456)78' FROM DUAL)
  9  SELECT phone,
 10         REGEXP_REPLACE (REPLACE (REPLACE (phone, '(', ''), ')', ''),
 11                         '(\d{3})(\d{3})(\d{1,4})',
 12                         '(\1)(\2)(\3)')
 13            result
 14    FROM test;

PHONE        RESULT
------------ --------------------
(123)(456)78 (123)(456)(78)
(123)4567890 (123)(456)(7890)
9874(234)123 (987)(423)(4123)
9999999999   (999)(999)(9999)

SQL>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM