Удалите специальные символы, кроме дефиса и пробела в Oracle String Data - PullRequest
0 голосов
/ 25 апреля 2019

Мне нужно удалить все специальные символы, кроме дефиса и пробела в Oracle String Data, используя функцию Reg_replace. Пожалуйста, помогите. Например:

Вход -> My Name is #name1 Выход -> My Name is name1

Вход -> this is my add-ress#" Выход -> this is my add-ress

Вход -> can we remov-e this'; Выход -> can we remov-e this

Ответы [ 2 ]

1 голос
/ 25 апреля 2019

Вы можете использовать [^[:alnum:] -] как регулярное выражение для сопоставления со значениями, которые хотите заменить.

Установка Oracle :

CREATE TABLE test_data( value ) AS
  SELECT 'this is my add-ress#\' FROM DUAL UNION ALL
  SELECT 'My Name is #name1' FROM DUAL UNION ALL
  SELECT 'can we remov-e this' FROM DUAL;

Запрос

SELECT value,
       REGEXP_REPLACE( value, '[^[:alnum:] -]', NULL ) AS replaced_value
FROM   test_data

выход

VALUE                 | REPLACED_VALUE     
:-------------------- | :------------------
this is my add-ress#\ | this is my add-ress
My Name is #name1     | My Name is name1   
can we remov-e this   | can we remov-e this

дБ <> скрипка здесь

0 голосов
/ 25 апреля 2019

Вы можете использовать следующие

with t(str) as
(
 select 'this is my add-ress#&%! : 198' from dual
)
select regexp_replace(str,'[^-0-9A-Za-z ]','') as "Result String"
  from t;

Result String
-----------------------
this is my add-ress  198
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...