1

我正在使用以下查询来获取我的函数的 DDL,而无需获取用户名。在我的查询中,我也得到了/斜线,我也不想看到/。我怎样才能摆脱这个/

FUNCTION_NAME= "EMP"
USER_NAME="USER1"



SELECT  REGEXP_REPLACE ( 
             REPLACE ( 
                  dbms_metadata.get_ddl ('FUNCTION', '" + function_name+ @"')
                      , '""" + User_name + @""".')
                     ,'^\s+', NULL, 1, 0, 'm') 

FROM dual

结果:

CREATE OR REPLACE FUNCTION "EMP"
(str_in IN VARCHAR2) RETURN BOOLEAN AS
-- validating ###-##-#### format
BEGIN
  IF TRANSLATE(str_in, '0123456789A','AAAAAAAAAAB') = 'AAA-AA-AAAA' THEN
    RETURN TRUE;
  END IF;
  RETURN FALSE;
END ssn_candy;
/

预期结果

CREATE OR REPLACE FUNCTION "EMP"
(str_in IN VARCHAR2) RETURN BOOLEAN AS
-- validating ###-##-#### format
BEGIN
  IF TRANSLATE(str_in, '0123456789A','AAAAAAAAAAB') = 'AAA-AA-AAAA' THEN
    RETURN TRUE;
  END IF;
  RETURN FALSE;
END ssn_candy;
4

1 回答 1

2

您的正则表达式会删除每行开头的空格。您可以将其修改'^(\s+|/)'为删除行首的斜杠。

如果您的意图是仅删除斜杠,您也可以尝试使用 TRIM 函数而不是正则表达式。

trim (trailing '/'  from 'source string')
于 2013-09-29T06:00:54.670 回答