Как создать процедуру удаления всех специальных символов и дубликатов записей - PullRequest
0 голосов
/ 11 марта 2020

Я хочу создать процедуру, чтобы удалить все специальные символы из столбца моей таблицы spesifi c, а затем удалить повторяющиеся записи.

Я пробовал следующий запрос, чтобы показать нужные логики c:

SELECT  ft_nm_val,count(*)  
  FROM ( SELECT REGEXP_REPLACE(ft_nm_val, '[^A-Za-z0-9, ]') AS ft_nm_val 
           FROM fraud_token_name )
 GROUP BY ft_nm_val  
HAVING COUNT(*) > 1

1 Ответ

0 голосов
/ 14 марта 2020

Поскольку вы хотите удалить дубликаты записей и если в таблице есть другие столбцы, концепция duplicate будет меняться построчно. Итак, я предполагаю, что у вас есть эта таблица с только одним упомянутым столбцом. Тогда вы можете создать такую ​​процедуру:

SQL> create or replace procedure make_unique is
begin
--# Leave only alpha-numeric characters through applying [^  ] to [:alnum:] posix
  update fraud_token_name
     set ft_nm_val = regexp_replace(ft_nm_val,'[^[:alnum:]]');

--# Then delete duplicate records
  delete fraud_token_name f1
   where rowid <
                (
                select max(rowid)
                  from fraud_token_name f2
                 where f2.ft_nm_val = f1.ft_nm_val   
                );  
  commit;
end;
/

SQL> exec make_unique;

Демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...