ФУНКЦИЯ(выражение)
Функции преобразования
Функции преобразования используются для преобразования одних типов данных в другие. Например, может возникнуть необходимость преобразования символьных данных в числовые. Данные могут храниться в базе данных в символьном виде, но для использования их в вычислениях необходимо представить эти данные в виде чисел. Математические функции и вычисления не работают с символьными данными.
Абсолютное значение
Округление
Квадратный корень
Знак числа
Возведение в степень
Целая часть и ближайшее целое сверху
Экспонента
Тригонометрические функции
ABS
ROUND
SQRT
SIGN
POWER
FLOOR,
CEIL EXP
SIN, COS, TAN
К главным классам преобразования данных относятся следующие преобразования:
• символьного типа данных в числовой;
• числового типа данных в символьный;
• символьного типа данных в тип даты и времени;
• типа даты и времени в символьный.
В ходе данного урока обсуждаются первые два класса преобразований. Остальные будут обсуждаться в ходе урока 12, "Работа с датами и временем".
В некоторых реализациях предусмотрено неявное преобразование данных одних типов в другие при необходимости
Преобразование символьных строк в числа
Относительно различия числовых и символьных данных вы должны четко представлять себе два момента.
1. К числовым данным могут применяться арифметические операции и функции.
2. При неформатированном выводе числовые значения выравниваются по правому краю, а символьные строки - по левому.
После преобразования символьной строки в число результат получает соответствующие только что указанные свойства.
В некоторых реализациях SQL нет функций для преобразования строк символов в числа, а в некоторых - есть. В любом случае по поводу имеющихся возможностей, правил преобразования и синтаксиса операторов необходимо обратиться к документации соответствующей реализации языка.
SELECT SUM(LENGTH(LAST_NAME) + LENGTH{FIRST_NAME)) TOTAL
FROM EMPLOYEE_TBL;
TOTAL
--------
71
1 строка выбрана.
В этом примере использованы функция LENGTH и арифметический оператор +, чтобы вычислить суммарную длину имени и фамилии для каждой записи таблицы, а после этого с помощью функции SUM вычисляется сумма длин всех имен и фамилий в таблице.
При вложении одних функций SQL в другие вычисление начинается с внутренней функции, и все вложенные функции обрабатываются последовательно по уровням вложения от внутренней к внешней
Резюме
Вы ознакомились с рядом функций, используемых в операторах SQL - как правило, в запросах, - чтобы изменить представление данных при выводе. Среди таких функций есть символьные, математические и функции преобразования. Очень важно понимать, что стандарт ANSI является только общим руководством для производителей при создании реализации языка, он не диктует точный синтаксис соответствующих операторов и не ограничивает право производителя на нововведения. Большинство производителей предлагают стандартные функции в соответствии с концепциями ANSI, но каждый производитель предлагает свой список доступных пользователю функций. Могут отличаться как имена функций, так и их синтаксис, но лежащие в основе функций концепции одинаковы.
Вопросы и ответы
Все ли функции относятся к стандарту ANSI?
Нет. В разных реализациях SQL очень часто оказываются разными функции преобразования одних типов данных в другие. С примерами некоторых из таких функций вы уже ознакомились. Правила использования функций и их синтаксиса лучше всего уточнить в документации, ввиду того, что в разных реализациях SQL имеются некоторые отличия в их использовании,.
В результате применения функций по отношению к данным меняются ли эти данные в базе данных?
Нет. При использовании функций сами данные не меняются. Функции используются в запросах для изменения только представления данных при выводе.
Практикум
Задания практических занятий разделены на тесты и упражнения. Тесты предназначены для проверки общего уровня понимания рассмотренного материала. Упражнения дают возможность применить на практике идеи, обсуждавшиеся в ходе текущего урока, в комбинации с идеями из предыдущих уроков. Мы рекомендуем ответить на тестовые вопросы и выполнить упражнения прежде, чем продолжать дальнейшее чтение книги. Ответы можно проверить по Приложению Б, "Ответы".
Тесты
1. Свяжите описания с подходящими функциями.
Описания______________________________Функции_____
а. Используется для | |I
извлечения части строки RPAD
из данной строки LPAD
б. Используется для LENGTH
обрезания части строки UPPER
в ее начале или конце
в. Используется для LTRIM
изменения регистра RTRIM
всех символов строки на нижний LOWER
г. Используется для SUBSTR
выяснения длины строки
д. Используется для объединения строк
2. Верно ли следующее утверждение: "При использовании в запросе функций для изменения отображения выводимых данных изменяется также и пред* ставление данных в самой базе данных?"
3. Верно ли следующее утверждение: "При использовании в запросах сложных выражений, где одни функции оказываются вложенными в другие, внешняя функция всегда выполняется первой?"
Упражнения
1. С помощью подходящей функции преобразуйте все буквы строки hello в прописные.
2. С помощью подходящей функции отобразите только первые четыре буквы строки джонсон.
3. С помощью подходящей функции соедините строки Джон и СОН в одну.
12-й час Работа с датами и временем
Из этого урока вы узнаете о том, как в SQL обрабатываются значения дат и времени. Мы подробно поговорим не только об особенностях представления данных типа DATETIME, но и о том, как значения дат и времени используются в разных реализациях языка. Вы узнаете о некоторых общих правилах использования данных этого типа и о том, как извлекать из базы данных значения дат и времени в нужном формате.
Основными на этом уроке будут следующие темы.
• Использование дат и времени
• В каком виде хранятся значения дат и времени
• Типичные форматы дат и времени
• Использование функций дат и времени
• Преобразования дат и времени
Как вы уже знаете, существует множество различных реализаций SQL. В этой книге рассмотрен стандарт ANSI и общие для многих реализаций языка функции, команды и операторы Для примеров выбрана реализация Oracle Но даже в рамках Oracle даты могут храниться в различных форматах. Уточнить особенности хранения дат можно по документации. Но, независимо от формы хранения дат, каждая конкретная реализация языка должна предлагать вам функции, позволяющие преобразовать даты из одного формата в другие.
Как хранятся даты?
В каждой реализации языка есть формат хранения дат, принятый по умолчанию. Такие форматы для различных реализаций SQL часто оказываются разными, но то же самое можно сказать и о форматах хранения других типов данных. В следующих разделах рассматривается стандартный формат и его составляющие для данных типа DATETIME- После этого мы с вами ознакомимся с особенностями представления дат и времени в основных реализациях SQL, таких как Oracle, Sybase и Microsoft SQL Server.
Стандартные типы данных для дат и времени
Имеется три стандартных типа данных SQL, предназначенных для хранения дат и времени (DATETIME).
Тип данных____ Использование
DATE Для хранения значений дат
Т1МЕ Для хранения значений времени
TIMESTAMP Для хранения значений дат и времени
Формат и диапазон допустимых значений для этих типов данных следующий.
DATE_______________
Формат: гпт-ММ-дд
Диапазон допустимых значений: от 0001-01-01 до 9999-12-31
TIME___________
Формат: чч: мм: сс.пп
Диапазон допустимых значений: от 00:00:00... до 23:59:61.999...
TIMESTAMP_________
Формат: гггг-ММ-ДД чч: мм: сс.пп
Диапазон допустимых значений: от 0001-01-01 ОО'ОО'ОО ' до 9999-12-31 23:59:61.999...
Компоненты типа DATETIME
Компонентами типа данных DATETIME являются элементы, из которых складываются значения дат и времени. Вот список отдельных компонентов типа DATETIME вместе с диапазонами допустимых значений.
YEAR (ГОД) ОТ 0001 ДО 9999
MONTH (месяц) от 01 до 12
DAY (день) от 01 до 31
HOUR (час) от оо до 23
MINUTE (минута) от оо До 59
SECOND (секунда) от о.000... до 61.999... Секунды можно представить в виде десятичных чисел с десятыми, сотыми частями секунды, миллисекундами и т. д. С указанными здесь компонентами, кроме последнего, вопросов возникать не должно, поскольку они представляют компоненты дат и времени, используемые в повседневной жизни. Удивление может вызвать лишь допущение, что в минуте может содержаться более 60 секунд. В соответствии со стандартом ANSI число 61.999 Для секунд возникает из-за возможного добавления или пропуска секунд при корректировке точного времени, что само по себе является достаточно редким явлением. Чтобы уточнить диапазон допустимых значений, обратитесь к документации по используемой вами реализации языка, поскольку по вопросам хранения дат и времени у производителей единого мнения нет.