从我的DDL查询中删除/字符

时间:2013-09-29 01:27:52

标签: regex oracle oracle11g

我使用下面的查询来获取我的函数的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;

1 个答案:

答案 0 :(得分:2)

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

如果您打算单独删除斜杠,也可以尝试使用TRIM函数而不是正则表达式。

trim (trailing '/'  from 'source string')