Преобразование вывода и встроенные функции. ПРактическая работа №3_SQl. Преобразование вывода и встроенные
Скачать 84.77 Kb.
|
Преобразование вывода и встроенные функции В SQL реализованы операторы преобразования данных и встроенные функции, предназначенные для работы со значениями столбцов и/или константами в выражениях. Использование этих операторов допустимо в запросах везде, где допустимы выражения. Числовые, символьные и строковые константы Несмотря на то, что SQL работает с данными в понятиях строк и столбцов таблиц, имеется возможность применения значений выражений, построенных с использованием встроенных функций, констант, имен столбцов, определяемых как своего рода виртуальные столбцы. Они помещаются в списке столбцов и могут сопровождаться псевдонимами. (оператор SELECT) Если в запросе вместо спецификации столбца SQL обнаруживает число,то оно интерпретируется как числоваяконстанта. Символьныеконстантыдолжны указываться в одинарных кавычках. Если одинарная кавычка должна выводиться как часть строковой константы, то ее нужно предварить другой одинарной кавычкой. Например, результатом выполнения запроса SELECT 'ФаМИЛИЯ', SURNAME, 'Имя', NAME, 100 FROM STUDENT; является таблица следующего вида:
Арифметические операции для преобразования числовых данных Унарный (одиночный) оператор «—» (знак минус) изменяет знак числового значения, перед которым он указан, на противоположный. Преобразованиевыводаивстроенныефункции Бинарные операторы «+», «—», «*» и «/» предоставляют возможность выполнения арифметических операций сложения, вычитания, умножения и деления. Например, результат запроса SELECT SURNAME, NAME, STIPEND, -(STIPEND*KURS)/2 FROM STUDENT WHERE KURS = 4 AND STIPEND > 0; выглядит следующим образом:
Операция конкатенации строк Операция конкатенации «||» позволяет соединять («склеивать») значения двух или более столбцов символьного типа или символьных констант в одну строку. Эта операция имеет синтаксис <значимое символьное выражение> {||} <значимое символьное выражение>. Например: SELECT SURNAME ||'_'|| NAME, STIPEND FROM STUDENT WHERE KURS = 4 AND STIPEND > 0; Результат запроса будет выглядеть следующим образом:
Выборка данных (оператор SELECT) Функции преобразования символов в строке LOWER — перевод в строчные символы (нижний регистр) LOWER (<строка>) UPPER — перевод в прописные символы (верхний регистр) UPPER (<строка>) INITCAP — перевод первой буквы каждого слова строки в прописную (заглавную) INITCAP (<строка>) Например: SELECT LOWER (SURNAME), UPPER (NAME) FROM STUDENT WHERE KURS = 4 AND STIPEND> 0; Результат запроса будет выглядеть следующим образом:
Строковые функции LPAD — дополнение строки слева LPAD (<строка>, <длина> [, <подстрока>]) <строка> дополняется слева заданной в <подстроке> последовательностью символов до указанной <длины> (возможно, с повторением последовательности); если <подстрока> не указана, то по умолчанию <строка> дополняется пробелами; если <длина> меньше длины <строки>, то исходная <строка> усекается слева до заданной <длины>. RPAD — дополнение строки справа RPAD (<строка>, <длина> [, <подстрока>]) Преобразование вывода и встроенные функции <строка> дополняется справа заданной в <подстроке> последовательностью символов до указанной <длины> (возможно, с повторением последовательности); если <подстрока> не указана, то по умолчанию <строка> дополняется пробелами; если <длина> меньше длины <строки>, то исходная <строка> усекается справа до заданной <длины>. LTRIM — удаление левых граничных символов LTRIM (<строка>[,<подстрока>]) из <строки> удаляются слева символы, указанные в <подстроке>; если < подстрока > не указана, по умолчанию удаляются пробелы; в <строку> справа добавляется столько пробелов, сколько символов слева было удалено, то есть длина <строки> ос- тается неизменной. RTRIM — удаление правых граничных символов RTRIM (<строка>[,<подстрока>]) из <строки> удаляются справа символы, указанные в <под- строке>; если <подстрока> не указана, по умолчанию удаляются пробелы; в <строку> слева добавляется столько пробелов, сколько символов справа было удалено, то есть длина <строки> ос- тается неизменной. Функции LTRIM и RTRIM рекомендуется использовать при на- писании условных выражений, в которых сравниваются текстовые строки. Дело в том, что наличие начальных или конечных пробе- лов в сравниваемых операндах может исказить результат сравнения. Например, константы ' ААА' и 'ААА ' не равны друг другу. SUBSTR — выделение подстроки SUBSTR (<строка>,<начало>[,<количество>]) из <строки> выбирается заданное <количество> символов, начиная с указанной параметром <начало> позиции в строке; Выборкаданных(операторSELECT) если <количество> не задано, символы выбираются с <на- чала> и до конца <строки>; возвращается подстрока, содержащая число символов, за- данное параметром <количество>, либо число символов от позиции, заданной параметром <начало> до конца строки; если указанное <начало> превосходит длину <строки>, то возвращается строка, состоящая из пробелов. Длина этой строки будет равна заданному <количеству> или исходной длине <строки> (при не заданном <количестве>). INSTR — поиск подстроки INSTR (<строка>,<подстрока>[,<начало поиска> [,<номер вхождения>]]) <начало поиска> задает начальную позицию в строке для поиска <подстроки>. Если не задано, то по умолчанию принимается значение 1; <номер вхождения> задает порядковый номер искомой подстроки. Если не задан, то по умолчанию принимается значение 1; значимые выражения в <начале поиска> или в <номере вхождения > должны иметь беззнаковый целый тип или приводиться к этому типу; тип возвращаемого значения — INT; функция возвращает позицию найденной подстроки. LENGTH — определение длины строки ыагстн(<строка>) длина <строки>, тип возвращаемого значения — ЮТ; функция возвращает NULL, если <строка> имеет NULL-значение. Примеры запросов, использующих строковые функцииРезультат запроса SELECT LPAD (SURNAME, 10, '@'), RPAD (NAME, 10, '$') FROM STUDENT WHERE KURS = 3 AND STIPEND> 0; будет выглядеть следующим образом: Преобразование вывода и встроенные функции
А запрос SELECT SUBSTR(NAME, 1, 1) Ц'. ' || SURNAME, CITY, LENGTH (CITY,) FROM STUDENT WHERE KURS IN(2, 3, 4)AND STIPEND > 0; выдаст результат:
Функции работы с числами ABS — абсолютное значение ABS (<значимое числовое выражение>) FLOOR — урезает значение числа с плавающей точкой до наи- большего целого, не превосходящего заданное число FLOOR (<значимое числовое выражение>) CEIL — самое малое целое, равное или большее заданного числа CEIL (<значимое числовое выражение>) Выборкаданных(операторSELECT) Функция округления — ROUNDROUND (<значимое числовое выражение>,<точность>) аргумент <точность> задает точность округления (см. пример ниже) Функция усечения — TRUNC TRUNC (значимое числовое выражение>,<точность>) Тригонометрические функции — COS, SIN, TAN (<значимое числовое выражение>) SIN (<значимое числовое выражение>) TAN (<значимое числовое выражение>) Гиперболические функции — COSH, SINH, TANH COSH (<значимое числовое выражение>) SINH (<значимое числовое выражение>) TANH (<значимое числовое выражение>) Экспоненциальная функция — ЕХР ЕХР (<значимое числовое выражение>) Логарифмические функции — LN, LOG ш (<значимое числовое выражение>) LOG (<значимое числовое выражение>) Функция возведения в степень — POWER POWER (<значимое числовое выражение>,<экспонента>) Определение знака числа — SIGN SIGN (<значимое числовое выражение>) Вычисление квадратного корня — SQRT SQRT (<значимое числовое выражение>) Пример Запрос SELECT UNIVJffiME, RATING, ROUND (RATING, -1), TRDNC (RATING, FROM UNIVERSITY; вернет результат: Преобразование вывода и встроенные функции
Функции преобразования значений Преобразование в символьную строку — TO_CHAR TO_CHAR (<значимое выражение>[,<символьный формат>]) <значимое выражение>— числовое значение или значение типа дата-время; для числовых значений <символьный формат> должен иметь синтаксис [S]9[9][,9[9]], где S — представление зна- ка числа (при отсутствии предполагается без отображения знака), 9 — представление цифр-знаков числового значе- ния (для каждого знакоместа). Символьный формат опре- деляет вид отображения чисел. По умолчанию для число- вых значений используется формат '999999.99'; для значений типа дата-время <символьный формат> имеет вид (то есть вид отображения значений даты и вре- мени): — в части даты 'DD-Mon-YY' 'DD-Mon-YYYY' 'MM/DD/YY' 'MM/DD/YYYY1 'DD.MM.YY' 'DD.MM.YYYY' Выборка данных (оператор SELECT) — в части времени 'НН24' ИН24.Ш' 'HH24:MI:SS' 'HH24:MI:SS.FF' ще: НН24 — часы в диапазоне от 0 до 24 R/FI — минуты SS — секунды FF — тики (сотые доли секунды) При выводе времени в качестве разделителя по умолчанию используется двоеточие (:), но при желании можно использо- вать любой другой символ. Возвращаемое значение — символьное представление Зна- чимого выражения> в соответствии с заданным ^символьным форматом> преобразования. Преобразование из символьного значения в числовое — TO_NUMBER TO_NUMBER (<значимое символьное выражение >) При этом <значимое символьное выражение> должно зада- вать символьное значение числового типа. Преобразование символьной строки в дату — TO_DATE TCMDATE (<значимое символьное выражение >[,<символьный формат>]) <значимое символьное выражение> должно задавать сим- вольное значение типа дата-время; <символьный формат> должен описывать представление значения типа дата-время в <значимом символьном выра- жении>. Допустимые форматы (в том числе и формат по умолчанию) приведены выше. Возвращаемое значение — <значимое символьное выраже- ние> во внутреннем представлении. Тип возвращаемого значе- ния — DATE. Над значениями типа DATE разрешены следующие операции: бинарная операция сложения; бинарная операция вычитания. Преобразование вывода и встроенные функции В бинарных операциях один из операндов должен иметь значение отдельного элемента даты: только год, или только ме- сяц, или только день. Например: при добавлении к дате '22.05.1998' пяти лет получится дата '22.05.2003'; при добавлении к этой же дате девяти месяцев получится да- та '22.02.1998'; при добавлении 10 дней получим '01.06.1998'. При сложении двух полных дат, например, '22.05.1998' и '01.12.2000', результат непредсказуем. |