Результат:
1
2
3
Выполняем команду COMMIT, после чего вновь выполняем запросы.
Для создания временных таблиц, работы с временными таблицами необходимы соответствующие привилегии.
После рестарта экземпляра базы данных данные во временных таблицах не сохраняются.
Если вы используете индексы во временных таблицах, то следует запомнить, что эти индексы нельзя пересоздавать после вставки данных.
Вы рассказали про временные таблицы в ORACLE SQL. Есть ли временные таблицы в MS SQL БД и в postgreSQL?
Временные таблицы в ORACLE существенным образом отличаются от тех же временных таблиц в MS SQL Server.
Есть ряд ограничений, не позволяющих использовать их так, как вы бы сделали, например, в MS SQL Server. Главное отличие в том, что в Oraсle временная таблица создается как часть словаря данных и является по сути статической.
Контрольные вопросы и задания для самостоятельного выполнения
1. Повторите материалы данного шага.
2. Создайте две временные таблицы tmdr и tmpr для хранения данных из таблицы CITY ON COMMIT DELETE ROWS и ON COMMIT PRESERVE ROWS.
3. Разберитесь в специфике работы с этими таблицами.
Шаг 59. Регулярные выражения в SQL
Регулярные выражения (англ. regular expressions, сокр. RegExp, RegEx, жарг. регэкспы или регексы) — это формальный язык поиска и осуществления манипуляций с подстроками в тексте, основанный на использовании метасимволов (символов-джокеров, англ. wildcard characters).
По сути это строка-образец (англ. pattern, по-русски ее часто называют шаблоном, маской), состоящая из символов и метасимволов и задающая правило поиска.
Регулярные выражения сделали революционные преобразования в использовании при поиске данных, при поиске соответствий.
Современные языки программирования, такие как Java, Go, Java Script, имеют специальные средства в своем арсенале для работы с регулярными выражениями.
В SQL диалекта ORACLE есть также множество операторов для работы с регулярными выражениями.
Для работы с регулярными выражениями в ORACLE SQL используются следующие операторы: REGEXP_LIKE, REGEXP_REPLACE, REGEXP_SUBSTR, REGEXP_COUNT, REGEXP_INSTR.
Примеры
Рассмотрим работу каждой из этих команд, для наглядности создадим таблицу и заполним ее следующими данными:
• фамилия, дата рождения, город проживания — данные представлены сплошным символьным буфером, с разделителем»,».
REGEXP_LIKE
REGEXP_LIKE выбирает из таблицы все строки, соответствующие заданному шаблону регулярного выражения REGEXP.
Пример использования REGEXP_LIKE (выражение; «REGEXP шаблон»): выберем из таблицы все строчки, которые содержат дату рождения в заданном формате REGEXP [0—9] {8}.
Рисунок 156. Пример использования REGEXP: запрос к REGTEST
Добавим строку с нестандартным форматом даты.
REGEXP_REPLACE
REGEXP_REPLACE заменяет шаблон регулярного выражения REGEXP в строке на заданную строку.
Синтаксис:
REGEXP_REPLACE (выражение; «REGEXP шаблон», «REGEXP шаблон» или константа) :
Заменим дату рождения в заданном формате REGEXP [0—9] {8} на выражение MYDATE.
Рисунок 157. работа с REGEXP: запрос к таблице REGTEST
Результат:
Зайцев, MYDATE, Киев
Иванов, MYDATE, Воронеж
Петров, MYDATE, Москва
Волков, 010A1988, Дмитров
REGEXP_SUBSTR
REGEXP_SUBSTR выделяет из строки заданный REGEXP шаблон.
Пример использования REGEXP_SUBSTR (выражение; «REGEXP шаблон»; вхождение; параметр сопоставления) :
Выделим дату рождения в заданном формате REGEXP [0—9] {8} из общей строки.
Рисунок 158. Запрос к таблице REGTEST: демонстрация REGEXP_SUBSTR
REGEXP_INSTR
REGEXP_INSTR определяет номер первого символа вхождения REGEXP шаблона в строку.
Рисунок 159. Демонстрация REGEXP_INSTR
REGEXP_COUNT
REGEXP_COUNT определяет количество вхождений REGEXP шаблона в строку.
Пример использования REGEXP_COUNT (выражение; «REGEXP шаблон») :
Определим количество цифр REGEXP [0—9] в строках таблицы.
Рисунок 160. Демонстрация REGEXP_COUNT: запрос к таблице REGTEST
На самом деле в REGEXP_LIKE, REGEXP_SUBSTR имеется ряд дополнительных параметров, которые влияют на результат работы данных функций.
Некоторые дополнительные интересные примеры использования REGEXP.
Выбираем подстроку с разделителями, есть строка Зайцев, 01111998, Киев = Зайцев 01111998 Киев
Читать дальше
Конец ознакомительного отрывка
Купить книгу