Программирование >>  Sql: полное руководство 

1 ... 22 23 24 [ 25 ] 26 27 28 ... 264


в стандарте SQL2 имеется дополнительная возможность определять строковые константы на основе различных национальных алфавитов (например, французского или немецкого) или пользовательских наборов символов. Но средства многоязыковой поддержки еще не в полной мере внедрены в ведущие СУБД.

Константы даты и времени

в реляционных СУБД значения даты, времени и интервалов времени представляются в виде строковых констант. Форматы этих констант в различных СУБД отличаются друг от друга. Кроме того, способы записи даты и времени меняются в зависимости от страны.

СУБД DB2 поддерживает несколько различных международных форматов для записи даты/времени (табл. 5 5). Выбор формата осуществляется при инсталляции системы. Кроме того, в DB2 для представления интервалов времени используются специальные константы, как показано в следующем примере:

HIRE DATE +30 DAYS

Обратите внимание на то, что информацию о периоде времени нельзя сохранить в базе данных, поскольку в DB2 нет соответствующего типа данных.

Таблица 5 5. Форматы даты и времени в

пании IBM

Формат

Американский Европейский Японский ISO

Формат значений типа

TIMESTAMP

Пример значения типа

TIMESTAMP

Формат Пример Формат Пример

значений значения значений значения

типа date типа date типа time типа time

mm/dd/yyyy 5/19/1960 hh mm ят/рт 2 18 PM

ddmmyyyy 19.5.1960 hh mm ss 14 18 08

yyyy-mm-dd 1960-5-19 hh:mm:ss 14.18:08

yyyy-mm-dd 1960-5-19 hhmm.ss 14 18 08

yyyy-mm-dd-hh.mm.ss.nnnnnn

1960-05-19-14 18.08.048632

СУБД SQL Server также поддерживает различные форматы констант даты и времени. Ниже приведен ряд примеров констант даты, допустимых в SQL Server:

March 15, 1990 Mar 15 1990 3/15/1990 3-15-90 1990 MAR 15

A вот примеры допустимых в этой СУБД констант времени:

15:30:25 3:30:25 РМ 3:30:25 рт 3 РМ

Значения даты и времени в Oracle также записываются в виде строковых констант с использованием следующего формата:

15-MAR-90



Кроме того, в Oracle можно использовать функцию todate () для преобразования констант даты из других форматов в этот формат. Например:

SELECT NAME, AGE FROM SALESREPS WHERE HIRE DATE = TO DATE(JON 14 1990, MON DD YYYY)

В стандарте SQL2 определен формат констант даты и времени, совпадающий с форматом ISO, показанным в табл. 5.5, за исключением того, что в константах времени для разделения часов, минут и секунд используются двоеточия.

Именованные константы

Кроме пользовательских констант, в SQL существуют специальные именованные константы, возвращающие значения, хранимые в самой СУБД. Например, значение константы current date, реализованной в ряде СУБД, всегда равно текущей дате. Эту константу можно использовать в таких запросах, как показанный ниже:

SELECT NAME, HIRE DATE FROM SALESREPS WHERE HIRE DATE > CURRENT DATE

В стандарте SQLl определена только одна именованная константа (константа user), но в больщинстве СУБД их количество гораздо больще. В общем случае именованную константу можно применять в любом месте инструкции SQL, в котором разрещается применять обычную пользовательскую константу того же типа. В стандарт SQL2 вощли наиболее полезные именованные константы из СУБД, в частности константы current date, current time, current timestamp, а также user, ses-sionjjser и system user.

В некоторых СУБД, включая SQL Server, доступ к системным значениям обеспечивается не с помощью именованных констант, а с помощью встроенных функций. Версия предыдущего запроса для SQL Server имеет вид:

SELECT NAME, HIRE DATE FROM SALESREPS WHERE HIRE DATE > GETDATE()

Встроенные функции описаны ниже в настоящей главе.

Выражения

Выражения в SQL используются для выполнения операций над значениями, извлеченными из базы данных или используемыми для поиска в базе данных Например, в следующем запросе вычисляется процентное соотнощение объема и плана продаж для каждого офиса:

SELECT CITY, TARGET, SALES, (SALES/TARGET) * 100 FROM OFFICES

A этот запрос возвращает список офисов, объем продаж которых превышает план на $50000 или больше:

SELECT CIT~Y- FROM OFFICE WHERE SALES > TARGET + 50000.00



в соответствии со стандартом ANSI/ISO в выражениях можно использовать четыре арифметические операции: сложение (X + Y), вычитание (X - Y), умножение (X * Y) и деление (X / У). Для формирования сложных выражений можно использовать скобки, например:

(SALES * 1.05) - (TARGET * .95)

Строго говоря, в приведенном выше выражении скобки не требуются, поскольку в соответствии со стандартом ANSI/ISO умножение и деление имеют более высокий приоритет, чем сложение и вычитание. В стандарте ANSI/ISO определено также, что преобразование целых чисел в десятичные и десятичных чисел в числа с плаваюшей запятой должно происходить автоматически. Таким образом, в одном выражении можно использовать числовые данные разных типов.

В большинстве СУБД допускается выполнение операций над датами и строками. Например, в СУБД DB2 реализован оператор конкатенации строк, записываемый в виде двух вертикальных черточек (). Если в двух столбцах с именами first name и lastname содержатся значения Jim и Jackson , следующее выражение в DB2:

(Mr./Mrs. il FIRST NAME И II LAST NAME)

вернет строку Mr./Mrs. Jim Jackson . Как уже было сказано, СУБД DB2 также поддерживает операции сложения и вычитания значений типа date, time и timestamp, когда эти операции имеют смысл. Эта возможность была включена и в стандарт SQL2.

Встроенные функции

Хотя встроенные функции не были определены в стандарте SQL1, в большинстве СУБД такие функции реализованы. Многие из них выполняют различные преобразования типов данных. Например, встроенные функции month () и year () из СУБД DB2 принимают в качестве аргумента значения date или timestamp и возвращают целое число, представляющее соответственно месяц или год из заданного аргумента. Запрос, приведенный ниже, возвращает имя и месяц приема на работу каждого служащего, данные о котором содержатся в нашей учебной базе данных:

SELECT NAME, MONTH(HIRE DATE) FROM SALESREPS

A этот запрос возвращает список служащих, нанятых на работу в 1990 году:

SELECT NAME, MONTH(HIRE DATE) FROM SALESREPS WHERE YEAR(HIRE DATE) = 1990

Кроме того, многие из встроенных функций выполняют форматирование данных. Например, встроенная функция to char() из СУБД Oracle принимает в качестве аргументов значение типа date и спецификацию формата, а возвращает строку, содержащую значение даты, отформатированное в соответствии со спецификацией. В результатах, возвращаемых запросом

SELECT NAME, TO CHAR (HIRE DATE, DAY MONTH DO, YYYY ) FROM SALESREPS



1 ... 22 23 24 [ 25 ] 26 27 28 ... 264

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика