Oracle удаляет символы из строки

Обновлено: 21.11.2024

В приведенной ниже таблице перечислены все функции символов, доступные в Oracle, и то, что они делают.


< td> См. LTRIM ; это то же самое, за исключением того, что он работает слева направо. < td>Возвращает часть col1; начинаться с символа в позиции (m) и продолжаться до длины (n)

Функция ЗАМЕНИТЬ

Возвращает строку, в которой все вхождения match_string в строке1 заменены на replace_string. REPLACE удобен для поиска шаблона символов, а затем изменения всех экземпляров этого шаблона в одном вызове функции.

Функция REPLACE Назначение

REPLACE возвращает char с заменой каждого вхождения search_string на replace_string. Если replace_string опущен или имеет значение null, то все вхождения search_string удаляются. Если search_string имеет значение null, то возвращается char. И search_string, и replace_string, а также char могут быть любого из типов данных 1) CHAR, 2) VARCHAR2, 3) NCHAR, 4) NVARCHAR2, 5) CLOB или 6) NCLOB. Возвращаемая строка имеет тот же набор символов, что и char. Функция возвращает VARCHAR2, если первый аргумент не является большим объектом, и возвращает CLOB, если первый аргумент является большим объектом.
REPLACE обеспечивает функциональность, аналогичную функции TRANSLATE. TRANSLATE обеспечивает односимвольную замену один к одному. REPLACE позволяет заменить одну строку на другую, а также удалить строки символов

В Oracle SQL есть три варианта замены специальных символов:

  • Использование функции ЗАМЕНИТЬ
  • Использование функции REGEXP_REPLACE
  • Использование функции ПЕРЕВОД

У каждого из них есть свои плюсы и минусы.

REPLACE позволяет заменить один символ в строке и, вероятно, является самым простым из трех методов. Недостатком является то, что он позволяет заменить только один символ. Если вы хотите заменить несколько, вы можете использовать вложенные функции, которые могут привести к путанице.

REGEXP_REPLACE использует регулярные выражения для замены символов. Он гибкий и позволяет использовать несколько символов, но с регулярными выражениями нужно немного научиться.

ПЕРЕВОД похож на ЗАМЕНУ, но позволяет заменять несколько символов в одной функции.

Давайте рассмотрим каждый из них, а также специальные символы для замены.

Что такое специальные символы?

Специальные символы, о которых я говорю, – это любые символы, кроме буквенно-цифровых.

На самом деле вы можете определить символы, которые хотите удалить в этих функциях.

Чтобы проверить возврат каретки, используйте функцию CHR(13). Чтобы найти символ новой строки, используйте CHR(10).

Использование ЗАМЕНЫ

Вы можете заменить специальные символы с помощью функции Oracle REPLACE.

Например, чтобы заменить символ возврата каретки пробелом:

Чтобы заменить символы возврата каретки и новой строки, необходимо использовать вложенные функции REPLACE.

Если вы хотите заменить много специальных символов, использование множества вложенных функций REPLACE может привести к путанице и снижению производительности.

Есть еще несколько способов.

Использование ПЕРЕВОДА

Функция ПЕРЕВОД похожа на ЗАМЕНУ, но позволяет заменять сразу несколько символов в одной функции.

Он позволяет указать символ для поиска и символ для его замены.

Чтобы заменить специальные символы с помощью TRANSLATE, вам может потребоваться указать замещающий символ много раз.

Давайте рассмотрим пример.

Эта функция заменит первый символ второго параметра (CHR(10)) на первый символ третьего параметра (пробел). Затем он заменит второй символ второго параметра (CHR(13)) на второй символ третьего параметра (еще один пробел).

Если вы хотите заменить длинный список символов, вам нужно каждый раз указывать новый символ для замены.

Во втором параметре 10 символов, поэтому и в третьем параметре должно быть 10 символов.
Использование REGEXP_REPLACE

Вы также можете использовать функцию REGEXP_REPLACE для замены специальных символов.

Она более мощная, чем функции REPLACE и TRANSLATE, но для ее использования необходимо понимать регулярные выражения.

Если вы хотите просто удалить все специальные символы, вы можете использовать такую ​​функцию:

Эта функция принимает три параметра.

Во-первых, ему нужно значение, содержащее вашу строку, в данном случае это снова your_column.

Затем у него есть регулярное выражение во втором параметре. В данном примере это означает все символы, которые не совпадают с цифрами или буквами.

Третий параметр – это символ, которым нужно заменить любые совпадающие символы.

Итак, в этом примере все символы, кроме цифр и букв, заменяются строкой нулевой длины. Конечно, вы можете это изменить.

Вот как можно заменить специальные символы в Oracle SQL. Вы можете использовать одну из этих трех функций.

Функция Oracle REPLACE() заменяет все вхождения указанной подстроки в строке на другую.

Синтаксис

Следующее иллюстрирует синтаксис функции Oracle REPLACE():

Аргументы

Функция Oracle REPLACE() принимает три аргумента:

строка (или выражение, результатом которого является строка) для поиска.

заменяемая подстрока.

строка замены.

Возвращаемое значение

Функция REPLACE() возвращает строку, в которой каждое вхождение string_pattern заменяется на string_replacement .

Если вы опустите string_replacement , функция REPLACE() удалит все вхождения string_pattern в string_expression .

Если string_pattern имеет значение null или пуст, функция REPLACE() возвращает string_expression .

Примеры

Следующий оператор заменяет is на «IS» в строке «Это тест»:

В результате получилось следующее:

Мы часто используем функцию REPLACE() для изменения данных в таблицах.

Давайте создадим новую таблицу с именем article для демонстрации.

Далее вставьте примеры данных в таблицу статей:

Затем запросите данные из таблицы статей:

После этого предположим, что вы хотите заменить все теги тегами в столбце article_body. Вот запросы для этого:

В этих запросах использовалась функция REPLACE() для замены на и на .

Наконец, запросите данные из таблицы article, чтобы проверить замены:

Как видно из вывода, теги были заменены тегами b, как и ожидалось.

Примечания

Oracle предоставляет вам функцию TRANSLATE(), которая имеет те же функции, что и функция REPLACE().

Тем не менее, функция TRANSLATE() обеспечивает однозначную замену один к одному, а функция REPLACE() позволяет заменить одну строку на другую.

В этом руководстве вы узнали, как использовать функцию Oracle REPLACE() для замены всех вхождений одной подстроки в строке на другую.

Вопрос. У меня есть строки таблицы, содержащие символы возврата каретки (\n), и мой вывод SQL*Plus искажается. Мне нужно знать соответствующую команду изменения всех, чтобы удалить строку из всех строк в моей таблице. Как я могу запустить команду «изменить все», чтобы удалить все вхождения этих специальных символов?

Ответ: Если вы знаете C или C++, '\n' — это символ возврата каретки. SQL*PLus читает это и вставляет возврат каретки. "\n" эквивалентно chr(10), и вы можете вставить его в строку Oracle:

-- вставьте возврат каретки между столбцами
выберите
col1||chr(10)||col2
из mytab;

В вашем случае вам нужно обновить все строки, чтобы удалить возврат каретки. . . .
Я бы использовал функцию regexp_replace, чтобы удалить |\n" из строк:

REGEXP_REPLACE имеет следующий синтаксис:

regexp_replace( источник, шаблон, строка замены, позиция, вхождение, параметры)

Источником может быть строковый литерал, переменная или столбец. Образец — это выражение, которое нужно заменить. Строка замены — это текст, который заменит совпадающие шаблоны. Необязательная позиция определяет место начала поиска исходной строки, и по умолчанию она равна 1. Необязательное вхождение определяет вхождение шаблона, который вы хотите заменить. По умолчанию это 0 (все вхождения).

Что-то вроде этого может сработать. Я не проверял это; вам может потребоваться экранировать обратную косую черту специального символа.

-- создать тестовую таблицу со всеми измененными строками во всех строках
установить escape '\'
создать таблицу
mytab1
как
выбрать mycol = regexp_replace( my_column, '\n', '')
из mytab;

После того, как вы заработаете, вы можете внести изменения во все операторы обновления строк. В этом примере мы избегаем обратной косой черты, ставя после нее знак процента:

-- удалить все специальные символы в таблице, экранируя специальный символ
update
mytab1
set mycol = mycol = regexp_replace(my_column, '\%n', '') < br />от mytab;

Получите полную
информацию о настройке Oracle SQL

Знаменитая книга "Расширенная настройка Oracle SQL. Полное руководство" содержит ценную информацию о настройке Oracle SQL. Эта книга включает сценарии и инструменты для повышения производительности Oracle 11g, и вы можете купить ее со скидкой 30 % непосредственно у издателя.

Бурлесон — американская команда

Примечание. Эта документация по Oracle была создана в качестве справочника по поддержке и обучению Oracle для использования нашими специалистами-консультантами по настройке производительности администраторов баз данных. Не стесняйтесь задавать вопросы на нашем форуме Oracle.

Проверьте опыт! Любой, кто рассматривает возможность использования услуг эксперта службы поддержки Oracle, должен самостоятельно проверить свои полномочия и опыт, а не полагаться на рекламу и самопровозглашенный опыт. Все законные эксперты Oracle публикуют свои квалификации Oracle.

Ошибки? Технология Oracle меняется, и мы стараемся обновлять нашу информацию о поддержке BC Oracle. Если вы обнаружите ошибку или у вас есть предложение по улучшению нашего контента, мы будем признательны за ваш отзыв. Просто электронная почта:

и укажите URL-адрес страницы.


Burleson Consulting

Оракул поддержки баз данных

Читайте также:

Функция Синтаксис Описание
CONCAT или || CONCAT(col1, col2) или Col1 || col2 Объединяет один столбец с другим
INITCAP INITCAP(col1) Заглавная буква каждое слово
INSTR INSTR(col1, c) Возвращает позицию (c) в col1
LENGTH LENGTH(col1) Возвращает длину col1
LOWER< /td> LOWER(col1) Преобразует все буквы в нижний регистр
LPAD LPAD(col1, n , c) Добавить символ (c) слева от col1, повторяя это до тех пор, пока col1 не будет состоять из (n) символов. Вы можете перечислить несколько символов в (c).
LTRIM LTRIM(col1 [,set]) Удалить перечисленные символы in (набор) с левой стороны col1, пока не будет найден символ, которого нет в наборе. По умолчанию для (set) используется пробел.
REPLACE REPLACE(col1, old, new) Заменить все вхождения старого персонажа с новым персонажем. Вы можете включить несколько символов в параметры (старый) и (новый); аналогично TRANSLATE .
RPAD RPAD(col1, n, c) См. LPAD ; это то же самое, за исключением того, что он добавляется к правой стороне col1.
RTRIM RTRIM(col1 [,set])
SOUNDEX SOUNDEX(col1) Convert col1 в фонетический вариант слова; позволяет сравнивать слова, которые звучат одинаково, но пишутся по-разному.
SUBSTR SUBSTR(col1, m [,n])
ПЕРЕВОД ПЕРЕВОД(столбец1, старый, новый) Заменяет старое на новое в col1
UPPER UPPER(col1) Преобразует col1 в верхний регистр