Рисунок 62. Запрос к MAN: пример LENGTH
Выбор подстроки из строки SUBSTR
SUBSTR (STR1, POS, LEN) выбирает LEN символов в строке str1, начиная с позиции POS.
STR1 — оригинальная строка.
POS — позиция, с которой начинается выделение.
NEWSUB — подстрока, на которую заменяем по умолчанию.
Примеры
Рассмотрим работу данной функции на примерах.
— BCD.
Выбрать все имена из MAN, которые начинаются с «Ан».
Рисунок 63. Пример работы SUBSTR: запрос
Замена подстроки в строке REPLACE
REPLACE (SRCSTR, OLDSUB, NEWSUB) — функция, которая возвращает преобразованную строку SRCSTR, где подстрока OLDSUB из строки SRCSTR заменяется на подстроку NEWSUBю
SRCSTR — оригинальная строка.
OLDSUB — заменяемая подстрока.
NEWSUB — подстрока, на которую заменяем, по умолчанию NULL.
Примеры
Заменить в имени в таблице MAN все буквы а на #.
Рисунок 64. Запрос: пример REPLACE
Заменить в имени в таблице MAN слог «Ма» на #*.
Рисунок 65. Запрос к MAN: пример REPLACE
Еще несколько примеров:
— $$ABB.
— AA, ИНФОAAAA, ИНФОA.
Функцию SUBSTR можно использовать с неполным набором параметров.
Например, в данном случае параметр LEN не задан, поэтому выбираются все символы в строке начиная с Pos.
Если мы укажем в качестве второго параметра отрицательное значение, то будет выбрано указанное количество символов с конца строки.
— DEF.
То есть для того чтобы выбрать последние символы в подстроке, достаточно использовать отрицательный параметр pos.
Функция REPLACE поможет убрать ненужные символы из строки.
— млк.
В других СУБД используются такие же функции для работы со строками?
Нет, функции для работы с текстовыми данными и строками несколько различаются в разных СУБД. Но принципиальные различия небольшие. Функции для работы со строками подробно описаны в документации к каждой СУБД.
Можно ли использовать регулярные выражения при выборе данных?
Да, разумеется, и для этого существуют специальные функции. Работу с регулярными выражениями мы рассмотрим далее, в следующих шагах.
Контрольные вопросы и задания для самостоятельного выполнения
1. Найти записи из таблицы МAN, начинающиеся на Ан, использовать SUBSTR.
2. Найти записи из таблицы MAN, где количество символов в фамилии человека больше 10.
3. Вывести из таблицы MANимя, фамилию, количество символов в фамилии, где количество символов в фамилии человека больше 5.
4. Заменить буквы «о» в слове «молоко» на @, вывести результат, использовать REPLACEи DUAL.
5. Подсчитать количество букв «о» в слове «молоко», вывести результат, использовать REPLACE, DUALи математику.
6. Найти первое вхождение буквы «о» в городе с кодом 1 из таблицы CITY.
7. Найти первое и последнее вхождения буквы « и» в городе с кодом 2 из таблицы CITY.
Шаг 27. Математика и пустые значения в запросах. Случайность — RANDOM
В запросах SQL мы можем использовать результаты математических вычислений.
Причем мы можем как выводить результаты математических вычислений, так и использовать математические выражения в условиях отбора строк WHERE.
Повторим вычисление математических выражений в SQL.
Для математических выражений используются следующие операции:
+ сложение,
— вычитание,
/ деление,
* умножение.
А также знакомые нам со школы функции:
SQrt — квадратный корень,
MOD — остаток от деления,
trunc — округление до целого,
sIN — синус
cos — косинус.
Все математические операции выполняются только для числовых значений, числовых колонок с типами NUMBER или производными от NUMBER.
Более подробную информацию можно посмотреть в документации.
Примеры
Вывести из таблицы MAN имя, фамилию и возраст (FIRSTNAME, LASTNAME, YEAROLD) человека, разделенный на 10.
Рисунок 66. Запрос из MAN
Вывести из таблицы MAN имя, фамилию и возраст человека (FIRSTNAME, LASTNAME, YEAROLD), умноженный на sIN (1), округлить до целого.
Рисунок 67. Запрос к таблице MAN с вычислением
Вывести из таблицы CITY записи (*), где квадратный корень от населения города больше 1000 (PEOPLES).
Рисунок 68. Запрос к CITY
Вывести из таблицы CITY название города (CITYNAME), квадратный корень от количества населения (PEOPLES), где значение кода города (CITYCODE) делится нацело на 3.
Рисунок 69. Запрос к CITY: функция MOD
Читать дальше
Конец ознакомительного отрывка
Купить книгу