Функции и операторы Access, используемые вместо ключевых слов ANSI SQL


Часть зарезервированных слов ANSI SQL заменяется в Jet SQL операторами или функциями. В перечислены функции и операторы Jet SQL, которые соответствуют зарезервированным словам ANSI SQL.
Таблица 8.4. Функции и операторы Access, используемые вместо зарезервированных слов ANSI SQL

 

Access

ANSI SQL

; And

AND

Avg ( )

AVG()

Between

BETWEEN

Count ( )

COUNT

Is

IS

Like

LIKE

 

Access

ANSI SQL

Мах( )

MAX()

Min( )

MIN()

Not

NOT

Null

NULL

Or

OR

Sum( )

SUM

Функция Access IsNull(), возвращающая значение True (-1), если ее аргумент равен лустому значению, и False (0) — в обратном случае, не имеет эквивалента в ANSI SQL и не является заменой модификаторов is Null или is Not Null в предложении WHERE. Кроме того, Jet SQL не поддерживает статистические функции по подмножеству, аргументом которых является любое выражение с параметром DISTINCT, например AVG (DISTINCT имя__поля). В таких случаях требуется использовать параметр DISTINCTROW в инструкции SELECT. Выражения, в которых применяются операторы, такие как, например, And или Or, заключаются в инструкциях Jet SQL в скобки.
Оператор Between. . .And, который имеет синтаксис
<выражение> [NOT] Between <значение_1> And <значение_2>
по-разному трактуется в языках Jet SQL и ANSI SQL. В языке Jet SQL значение_1 может превышать значение_2; в ANSI SQL значение_1 должно быть меньше или равно значение_2.
Зарезервированные слова Jet SQL и функции, не входящие в ANSI SQL
Существует несколько зарезервированных слов Jet SQL, которые не имеют аналогов в ANSI SQL. Это слова:

  • DISTINCTROW — позволяет исключить из результирующего множества запроса повторяющиеся строки;
  • PIVOT — используется в перекрестных запросах;
  • TRANSFORM — создание перекрестного запроса.

Кроме того, Jet позволяет использовать четыре статистические функции по подмножеству, не включенные в ANSI SQL.
Таблица 8.5. Дополнительные статистические функции Access SQL

Функция Access

Назначение

StdDev()

Смещенное значение среднеквадратичного отклонения для выборки

StdDevP ( )

Несмещенное значение среднеквадратичного отклонения для выборки

Var ()

Значение смещенной дисперсии для выборки

VarP ( )

Значение несмещенной дисперсии для выборки

 

Эквивалентные типы данных Jet SQL и ANSI SQL
В перечислены типы данных ANSI SQL, эквивалентные им типы данных языка Jet SQL и допустимые синонимы.
Таблица 8.6. Эквивалентные типы данных Jet SQL и ANSI SOL

Типы данных ANSI SQL

Типы данных Jet SQL

Синоним

Примечание

BIT, BIT VARYING

BINARY

VARBINARY, BINARY VARYING BIT VARYING

He является стандартным типом данных Access

He поддерживается

BIT

BOOLEAN, LOGICAL, LOGICAL1, YESNO

В Access эквивалентно типу данных Логический

He поддерживается

TINYINT

INTEGER 1, BYTE

Целое число длиной 1 байт

He поддерживается

COUNTER

AUTOINCREMENT

He поддерживается

MONEY

CURRENCY

В Access эквивалентно типу данных Денежный

DATE, TIME, TIMESTAMP

DATETIME

DATE, TIME

В Access эквивалентно типу данных Дата/Время

He поддерживается

UNIQUEIDEN TIFIER

QUID

DECIMAL

DECIMAL

NUMERIC, DEC

REAL

REAL

SINGLE, FLOAT4, IEEESINGLE

Тип данных Числовой (с плавающей точкой, 4 байта)

DOUBLE PRECISION, FLOAT

FLOAT

DOUBLE, FLOATS, IEEEDOUBLE, NUMBER

Тип данных Числовой (с плавающей точкой, 8 байтов)

SMALLINT

SMALLINT

SHORT, INTEGER2

Тип данных Числовой (2 байта)

INTEGER

INTEGER

LONG, INT, INTEGER4

Тип данных Числовой (длинное целое)

INTERVAL

He поддерживается

He поддерживается

IMAGE

LONGBINARY, GENERAL, OLEOBJECT

Тип данных поля объекта OLE

He поддерживается

TEXT

LONGTEXT, LONGCHAR, MEMO, NOTE, NTEXT

Тип данных Поле Memo

CHARACTER, CHARACTER VARYING, NATIONAL CHARACTER, NATIONAL CHARACTER VARYING

CHAR

TEXT(n), ALPHANUMERIC, CHARACTER, STRING, VARCHAR, CHARACTER VARYING, NCHAR, NATIONAL CHARACTER, NATIONAL CHAR, NATIONAL CHARACTER VARYING, NATIONAL CHAR VARYING

Тип данных Текстовый

Реализация SQL процессора Jet 4.x имеет существенные отличия в типах данных от предыдущей версии Jet SQL, а именно:

  • тип TIMESTAMP теперь не является синонимом типа DATETIME;
  • тип NUMERIC теперь используется как синоним типа DECIMAL, а не FLOAT или DOUBLE, как это было раньше;
  • поля типа LONGTEXT и CHAR всегда хранятся в формате представления знаков Unicode, который эквивалентен такому типу данных ANSI SQL, как NATIONAL CHAR;
  • если имя типа данных TEXT используется без указания необязательной длины, то создается поле типа LONGTEXT. В результате появляется возможность применять инструкции CREATE TABLE для создания типов данных, совместимых с Microsoft SQL Server;
  • если имя типа данных TEXT используется с указанием необязательной длины, например TEXT(25), то тип данных соответствующего поля будет эквивалентен типу CHAR. В результате сохраняется обратная совместимость с большинством приложений, использующих процессор Microsoft Jet, а также согласованность типа данных TEXT (без указания длины) с Microsoft SQL Server;
  • тип данных BIT стандарта ANSI SQL не соответствует типу данных BIT языка Jet SQL. Он совпадает с типом данных BINARY. Для типа данных BIT языка Jet SQL нет эквивалентного типа в ANSI SQL.