|
Программирование >> Построение запросов sql
Для выделения строки в обратной последовательности (начиная с конца) используется функция REVERSE. Функция имеет следующий формат: REVERSE (<строковое выражение>). Например, для вывода информации об абонентах, имеющих инициалы E.B., можно испрользовать следующий запрос: SELECT * FROM Abonent WHERE REVERSE (Fio) STARTING WITH REVERSE (Е.В.);. Результат выполнения запроса представлен на рис. 3.20.
Рис. 3.20. Результат работы функции REVERSE которого будут выделяться начале (для LEFT) или конце Функции LEFT и RIGHT используются для выделения нужного количества символов из начала или конца определенной строки соответственно и имеют следующий формат: LEFT (<строковое выражение>, длина), RIGHT (<строковое выражение>, длина), где <строковое выражение> - выражение, из символы; длина - количество выделяемых символов в (для RIGHT) строки. Например, предыдущий запрос, реализованный с помощью функции REVERSE, можно реализовать с помощью функции RIGHT следующим образом: SELECT * FROM Abonent WHERE RIGHT (Fio, 4) = Е.В.;. Результат выполнения запроса будет совпадать с результатом, представленным на рис. 3.20. Например, для вывода Fio абонентов, проживающих на улице с кодом 3, и первых 4-х цифр из номеров их лицевых счетов можно использовать следующий запрос: SELECT Fio, LEFT (AccountCD, 4) FROM Abonent WHERE StreetCD = 3;. Результат выполнения запроса представлен на рис. 3.21.
Рис. 3.21. Результат работы функции RIGHT Существует ряд функций для замены части исходной строки на другую последовательность символов. Функция OVERLAY заменяет в исходной строке подстроку, начинающуюся с номера позиция и имеющую размер длина, на значение строки для замены. Функция имеет следующий формат: OVERLAY ( <исходная строка> PLACING <строка для замены> FROM позиция [ FOR длина ] ), где <исходная строка> и <строка для замены> могут представлять собой строковое выражение. Если длина не указана, то по умолчанию принимается длина в символах строки для замены (CHAR LENGTH (<строка для замены>)). Функция OVERLAY эквивалентна следующему выражению с использованием функции SUBSTRING: SUBSTRING (<исходная строка> FROM 1 FOR (позиция - 1)) <строка для замены> SUBSTRING (<исходная строка> FROM (позиция + длина)). Функция REPLACE заменяет все вхождения <подстроки> в <строковое выражение> на указанную <строку для замены>. Имеет следующий формат: REPLACE (<строковое выражение>, <подстрока>, <строка для замены>). Например, для замены в названии неисправностей слова плиты на словосочетание газовой плиты можно выполнить следующий запрос: SELECT REPLACE (FailureNM, плиты, газовой плиты) FROM Disrepair;. Результат выполнения запроса представлен на рис. 3.22. REPLACE Засорилась водогрейная колонка Не горит АГВ Течет из водогрейной колонки Неисправна печная горелка Неисправен газовый счетчик Плохое поступление газа на горелку газовой плиты Туго поворачивается пробка крана газовой плиты При закрытии краника горелка газовой плиты не гаснет Неизвестна Рис. 3.22. Результат работы функции REPLACE К скалярным функциям относится также функция TRIM. возвращает строку аргумента, удаляя символы (по умолчанию начала и/или конца строки. Для вызова функции используется следующий синтаксис: TRIM ( [ [LEADING TRAILING BOTH ] [ <удаляемая подстрока> ] FROM ] <строковое выражение>). Эта функция - пробелы) из LEADING указывает на то, что надо удалить указанную подстроку из начала строки, TRAILING - из конца строки, BOTH - из начала и конца строки. При использовании функции следует учитывать следующее: 1) если LEADING, TRAILING или BOTH не указаны, то принимается BOTH по умолчанию; 2) если <удаляемая подстрока> не определена, то за нее принимается по умолчанию пустая строка; 3) если LEADING, или TRAILING, или BOTH и/или <удаляемая подстрока> указаны, то после слова FROM должно быть обязательно указано <строковое выражение>, из которого удаляются символы; 4) указание строки, из которой удаляются символы, после слова FROM не может быть использовано самостоятельно (если LEADING, TRAILING, BOTH и <удаляемая подстрока> не указаны). Например, для вывода данных из таблицы Street, указывая название улицы без слова УЛИЦА , можно использовать следующий запрос: SELECT StreetCD, TRIM (BOTH УЛИЦА FROM StreetNM) AS Str Name FROM Street;. Результат выполнения запроса представлен на рис. 3.23.
Рис. 3.23. Результат работы функции TRIM При указании удаляемой подстроки следует учитывать регистр символов (строчные или прописные буквы). Если в предыдущем примере вместо УЛИЦА ввести улица, то запрос выдаст неверный результат, так как все названия улиц в таблице Street записаны в верхнем регистре символов. Существуют функции LPAD и RPAD, которые дополняют строку аргумента слева (LPAD) или справа (RPAD) указанной последовательностью символов (<строка заполнитель>) до заданного размера (длина). В случае если <строка заполнитель> не указана, для дополнения используется пробел. Строка-заполнитель обрезается, когда результирующая строка достигает заданной длины. Функции имеют следующий формат: LPAD( <строковое выражение>, длина [, <строка заполнитель> ] ), RPAD( <строковое выражение>, длина [, <строка заполнитель> ] ).
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |