Oracle SQL |Использовать регулярное выражение, чтобы игнорировать управляющие символы, кроме новой строки? - PullRequest
0 голосов
/ 16 октября 2018

Мне нужно идентифицировать и заменить все управляющие символы в столбце на '' Я попытался использовать следующий запрос.

 SELECT description, REGEXP_REPLACE(description, '[![:cntrl:]]', '') from table1;

Он удаляет все управляющие символы вместе с символом новой строки.Мне нужно выдержать новую линию персонажа.Я пытался использовать что-то вроде следующего.

 REGEXP_REPLACE(description, '[![:cntrl:]'||CHR(10)||CHR(13)||']', '')

Но это не сработало.Буду признателен за любую помощь в правильном направлении.Заранее спасибо.

1 Ответ

0 голосов
/ 16 октября 2018

:cntrl: является противоположностью :print:, поэтому вы можете отменить комбинацию этого плюс управляющий символ (ы), который вы хотите сохранить:

regexp_replace(description, '[^[:print:]'||chr(10)||']', null)

или, возможно, в зависимости от вашей попытки(но не нужно, если вы имели в виду только «новую строку»):

regexp_replace(description, '[^[:print:]'||chr(10)||chr(13)||']', null)

Отрицание выполняется ^, а не !.Ваш исходный код удалял любые управляющие символы или фактический символ !, что, вероятно, не совсем то, что вы имели в виду.

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