Программирование >>  Исключение дубликатов строк 

1 ... 33 34 35 [ 36 ] 37 38 39 ... 152


числа, и столбец с именем Distance (Расстояние) и типом данных REAL, в котором хранятся числа с дробной частью. Чтобы сложить значение столбца Distance со значением столбца TotalLength, необходимо воспользоваться функцией CAST для преобразования значения столбца Distance в данные типа INTEGER или значения столбца TotalLength в данные типа REAL. Ниже приведено выражение, которое используется для выполнения этого:

Выражение TotalLength + CAST(Distance AS INTEGER)

Результат 483

Если совместимость значений столбцов, используемых в выражении, не обеспечена, СУБД вьщаст сообщение об ошибке и, возможно, также отменит выполнение операций в выражении. Большинство СУБД могут сообщить, что проблема связана с несоответствием типов данных и, следовательно, будет известно, что необходимо сделать для исправления выражения. Многие СУБД выполняют такие преобразования автоматически, не предупреждая. Но обычно они перед вычислением выражения преобразуют все числа к наиболее сложному типу данных. В предыдущем примере СУБД должна преобразовать TotalLength в REAL. REAL является более сложным типом данных, чем INTEGER, потому что все значения INTEGER могут содержаться в типе данных REAL. Однако, возможно, это не то, что требуется.

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

Прифметико дот и времени

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

Вырожейие с датой

На рис. 5.8 представлен синтаксис для выражений с датой. Как можно видеть, создавать выражения достаточно просто: берем одно значение и складываем его или вычитаем из второго значения. Однако при создании выражений с использованием даты не забывайте о некоторых моментах.

При использовании ссылки на столбец убедитесь в том, что его тип данных - DATE или целый цифровой (к этой категории относятся INTEGER и SMALLINT). В противном случае, возможно, следует воспользоваться функцией CAST для преобразования значений столбца в данные типа DATE. В стандарте SQL отсутствуют





ZcbiAKQ НО столбец

Рис. 5.8.

Синтаксическая диаграмма для выражения с использованием даты

требования к такому преобразованию, и данный вопрос остается целиком на усмотрение поставщиков БД. Вследствие этого некоторые системы БД преобразуют значения столбца автоматически, тогда как другие требуют явного преобразования типа столбца.

Стандарт SQL позволяет взять целое цифровое значение и прибавлять его или вычитать из даты. Можно рассматривать это как добавление или вычитание дней. Таким способом можно ответить на вопросы типа Какая дата будет спустя девять дней? или Какая дата была несколько дней назад? В данном случае совершенно не имеет смысла использование чисел с десятичной дробной частью - какой может быть дата через 3,5 дня?

Необходимо принять во внимание еще один момент. Можно вычесть одну дату из другой, но невозможно сложить две даты, и это совершенно логично. В качестве примера возьмем базу данных персонала. Пусть нужно вычесть дату приема на работу из текущей даты, чтобы определить, как долго сотзудник работает в компании, но нужно было бы добавить некоторое число к текущей дате для извлечения даты следующей проверки сотрудника.

Способ определения выражения с использованием даты установит, будет ли получена в результате дата или целое цифровое значение.

В конечном итоге для выражений с датой справед/жво следующее:

Date (Literal or Column) ± Non-Decimal Numeric (Literal or Column) = Date

(Дата (Литерал или столбец) ± Целое цифровое значение (Литерал или столбец) = Дата)

Date (Literal or Column) - Date (Literal or Column) = Non-Decimal Numeric Value

(Дата (Литерал или столбец) - Дата (Литерал или столбец) = Целое цифровое значение)

Как только это простая концепция станет понятной, можно создавать любые необходимые выражения с датой. Приведем некоторые примеры типов выражений с датой, которые можно определить:

1999-05-16 - 5 4999-11-14 + 12



ReviewDate + 90 EstimateDate - 1999-07-22 -

DaysRequired 1999-06-13

ShipDate - OrderDate

Внимание! Стандарт SQL определяет, что можно складывать и вычитать данные типа INTERVAL из литералов DATE или TIME или из столбца, содержащего значение DATE или TIME. Однако большинство реализаций не поддерживает тип данных INTERVAL, определенный стандартом SQL, но позволяют выполнять сложение или вычитание двух значений типа DATE или TIME. При вычитании одного значения типа DATE или TIME из другого получается интервал между двумя датами или моментами времени, но типа данных DATE или TIME. При сложении одного значения DATE или TIME с другим, получим другое значение DATE или TIME. Во всех примерах данной книги предполагается, что можно выполнять как сложение, так и вычитание значений типа DATE или TIME. Уточните в документации для базы данных, как ваша СУБД обрабатывает такие выражения.

Вырожснип с использовонисм времени

Можно создавать выражения, используя также значения времени. На рис. 5.9 представлена синтаксическая структура для его использования. Выражения для даты и времени очень похожи, и те же самые правила и ограничения, которые применяются к выражению с использованием даты, применяются к выражению с использованием времени.

Выражение с использованием времени возвращает либо значение времени, либо целое цифровое значение, в зависимости от того, как определено само выражение. Можно обобщить это для выражения с использованием времени таким образом:

Время (Литерал или столбец) ± Целое цифровое значение (Литерал или столбец) = Время

Время (Литерал или столбец) - Время (Литерал или столбец) =

Целое цифровое значение

Выражение с использованием времени

Лит0рал типа время*

Ссылка но столбец

Целый цифровой литерал

Ссылка но столбец

Литерал типа время*

Рис. 5.9. Синтаксическая диаграмма для выражения

с использованием времени



1 ... 33 34 35 [ 36 ] 37 38 39 ... 152

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