REPLACE в Oracle SQL — как заменить символы и подстроки в тексте

🟢 REPLACE в Oracle SQL. Введение

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

Её часто применяют:

  • Для чистки данных (например, удаление пробелов или спецсимволов)

  • При обработке пользовательского ввода

  • Для унификации значений

  • В ETL-процессах (загрузка и преобразование данных)


🔤 Написание

sql
REPLACE(строка, что_заменить, на_что_заменить)

📌 Если третий аргумент (на что заменить) не указан, то удаляется найденная подстрока.


🔄 Где часто используется

  • В SELECT, чтобы обработать результат вывода

  • В UPDATE, чтобы модифицировать строку в таблице

  • При фильтрации (WHERE REPLACE(...) = ...)

  • В динамических выражениях и форматировании

  • В сочетании с TRIM, SUBSTR, INSTR, TRANSLATE


🧪 10 Примеров использования REPLACE с пояснениями

1️⃣ Замена одной подстроки на другую

sql
SELECT REPLACE('hello world', 'world', 'Oracle') AS result FROM dual;

Результат: hello Oracle


2️⃣ Удаление символа (без третьего параметра)

sql
SELECT REPLACE('123-456-7890', '-') AS phone_clean FROM dual;

Удаление всех дефисов → 1234567890


3️⃣ Замена нескольких символов — последовательно

sql
SELECT REPLACE(REPLACE('a-b-c', '-', ''), 'c', 'X') AS cleaned FROM dual;

Комбинация замен


4️⃣ Применение в UPDATE

sql
UPDATE customers
SET phone = REPLACE(phone, '-', '');

Очистка телефонных номеров от дефисов.


5️⃣ Замена символов в тексте запроса с WHERE

sql
SELECT * FROM messages
WHERE REPLACE(content, '!', '') LIKE '%привет%';

Удаление восклицательных знаков перед поиском.


6️⃣ Работа с NULL (ничего не меняется)

sql
SELECT REPLACE(NULL, 'a', 'b') FROM dual; -- Результат: NULL

Функция не выполняется для NULL


7️⃣ REPLACE в подзапросе

sql
SELECT name FROM (
SELECT REPLACE(full_name, 'Mr. ', '') AS name FROM users
);

Удаление префиксов в именах.


8️⃣ REPLACE внутри CASE

sql
SELECT
CASE
WHEN INSTR(phone, '-') > 0 THEN REPLACE(phone, '-', '')
ELSE phone
END AS clean_phone
FROM contacts;

Условная замена при наличии дефиса.


9️⃣ Удаление лишних пробелов

sql
SELECT REPLACE('hello world', ' ', ' ') FROM dual;

Можно применить несколько раз для полного удаления.


🔟 Удаление HTML-тегов (упрощённый способ)

sql
SELECT REPLACE(REPLACE('<b>Hello</b>', '<b>', ''), '</b>', '') FROM dual;

Очистка строки от тегов (подходит для простых случаев).


🧩 Заключение

REPLACE — это базовая, но очень полезная функция Oracle SQL, особенно при обработке текстовых данных. Она работает быстро и эффективно, позволяет проводить замены любой сложности и может быть встроена в более сложные текстовые выражения.

💡 Запомни:

  • При отсутствии третьего аргумента — символы удаляются

  • Учитывает регистр (чувствителен к заглавным/строчным)

  • Можно применять вложенные REPLACE для сложной очистки

  • Хорошо комбинируется с другими текстовыми функциями


🔜 Следующая статья:

TO_DATE в Oracle SQL — как преобразовать строку в дату


Понравилась статья? Поделиться с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии