Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Oracle删除姓名/姓氏/电话和地址_Sql_Regex_Oracle_Regexp Replace_Regexp Substr - Fatal编程技术网

Sql Oracle删除姓名/姓氏/电话和地址

Sql Oracle删除姓名/姓氏/电话和地址,sql,regex,oracle,regexp-replace,regexp-substr,Sql,Regex,Oracle,Regexp Replace,Regexp Substr,我有一个包含用户注释的Oracle表。我想掩盖所有的单词,如姓名/姓氏/电话和地址 在Oracle中有没有一种简单的方法可以做到这一点 例如: "Hello, i'm Alex DURAND, my phone number is 0685987525" should be transform in "Hello, i'm XXXX XXXXXX, my phone number is XXXXXXXXXX" 当任务是删除regexp\u替换的单词时,非

我有一个包含用户注释的Oracle表。我想掩盖所有的单词,如姓名/姓氏/电话和地址

在Oracle中有没有一种简单的方法可以做到这一点

例如:

"Hello, i'm Alex DURAND, my phone number is 0685987525"
should be transform in
"Hello, i'm XXXX XXXXXX, my phone number is XXXXXXXXXX"

当任务是删除regexp\u替换的单词时,非常感谢

select regexp_replace(lower(user_comment), '(surname|name|telephone|address)', '') replace_regexp
  from tab1
  • 使用
    regexp\u replace()
    函数通过
    '([[:digit:]])
    模式屏蔽电话号码

  • 使用
    regexp_substr()
    函数通过
    '(i'm)(.*?[^,]+'
    模式提取以
    i'm
    开头的部分

  • 名称和姓氏是通过使用
    '[^]+'
    regexp_substr()函数从第二步中派生的字符串中提取出来的

  • 在最后一步,通过
    regexp\u replace()
    replace()
    函数连续使用非空白字符匹配

    with t2 as
    (
     select regexp_replace( str, '([[:digit:]])', 'X') as str,
            regexp_substr(str,'(I''m )(.*?)[^,]+',1,1,'i') as str2       
       from t --> your original table
    ), t3 as
    (
     select regexp_substr(str2,'[^ ]+',1,2) as name,
            regexp_substr(str2,'[^ ]+',1,3) as surname,
            t2.*
       from t2
     )
    select replace(
                   replace( str, name, regexp_replace(name,'(*\S)','X') )
                  ,surname, regexp_replace(surname,'(*\S)','X') )
           as "Result String"        
      from t3
    
  • 其中,
    str
    列中每个值的格式假定在整个表格中是固定的

    评论的格式总是一样的吗?如果不是,你怎么知道“亚历克斯·杜兰德”(应该戴面具)和“他的名字”(不应该戴面具)不同?还有,你怎么知道“09012020”是电话号码而不是今天的日期?很快-我们需要规则。