Порівняння мови SQL у Access із мовою TSQL у SQL Server
Applies ToAccess для Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Щоб перенести дані Access на сервер SQL Server або створити рішення Access із серверною базою даних SQL Server, дуже важливо розуміти різницю між мовою SQL, яка використовується в Access, і мовою Transact SQL (TSQL), яка використовується в SQL Server. Нижче наведено важливі відмінності, знання яких впливатиме на роботу вибраного рішення.

Докладні відомості див. в статті Access SQL: основні поняття, словник і синтаксис ідовідник Transact-SQL.

Відмінності між синтаксисом і виразами

Існує кілька відмінностей у синтаксисі і виразах, які потребують перетворення. У таблиці нижче наведено відмінності, які зустрічаються найчастіше.

Відмінність

SQL у Access

TSQL у SQL Server

Атрибут реляційної бази даних

Зазвичай називається полем

Зазвичай називається стовпцем

Рядкові літерали

Лапки ("), наприклад, "Mary Q. Contrary"

Апостроф ('), наприклад, 'Mary Q. Contrary'

Літерали дат

Решітка (#), наприклад, #1/1/2019#

Апостроф ('), наприклад, ' 1/1/2019 '

Символ узагальнення (багатосимвольний)

Зірочка (*), наприклад, "Cath*"

Відсоток (%), наприклад, 'Cath%'

Символ узагальнення (односимвольний)

Знак питання (?), наприклад, "Cath?"

Підкреслення (_), наприклад, "Cath_"

Оператор залишку від ділення

Оператор MOD, наприклад, Value1 MOD Value2

Відсоток (%), наприклад, Value1 % Value2

Логічні значення

WHERE Bitvalue = [True | False]

або

WHERE Bitvalue = [-1 | 0]

WHERE Bitvalue = [1 | 0]

Параметри

[<ім'я, яке не визначає стовпець>]

або

У поданні SQL використовуйте оголошення параметрів SQL.

@ParamName

Примітки   

  • Програма Access бере в лапки (") назви та об'єкти таблиці. Мова T-SQL може використовувати лапки для імен таблиць із пробілами, але це не стандартна практика іменування. У більшості випадків об'єкти слід перейменувати, щоб імена були без пробілів. Запити також потрібно переписати, щоб відобразити нові імена таблиць. Використовуйте квадратні дужки [] для таблиць, які не можна перейменувати, хоча вони не відповідають стандартам іменування. Програма Access бере параметри в запитах у круглі дужки, але в T-SQL їх можна видалити.

  • Рекомендовано використовувати канонічний формат дати (рррр-мм-дд гг:хх:сс). Це стандарт ODBC для дат, що зберігаються як символи, який забезпечує узгоджене представлення дат у базах даних і зберігає порядок сортування дат.

  • Щоб уникнути плутанини, порівнюючи логічні значення, можна скористатися наведеним нижче порівнянням для Access і SQL Server.

    • Перевірка на значення FALSE    WHERE Bitvalue = 0

    • Перевірка на значення TRUE    WHERE Bitvalue <> 0

Null-значення

Null-значення – це не пусте поле, це поле, “яке не містить жодного значення”. Null-значення – це покажчик місця заповнення, який означає, що дані відсутні або невідомі. Системи баз даних, які розпізнають Null-значення, застосовують тризначну логіку. Це означає, що щось може бути істинним, хибним або невідомим. Якщо неправильно обробляти значення, можна отримати хибні результати, роблячи порівняння рівності або оцінюючи речення WHERE. Ось порівняння того, як програми Access і SQL Server працюють із Null-значеннями.

Вимкнення Null-значень у таблиці

За замовчуванням у програмах Access і SQL Server Null-значення ввімкнуто. Щоб вимкнути Null-значення в стовпці таблиці, виконайте наведені нижче дії.

  • В Access установіть значення властивості поля Обов’язкове рівним “Так”.

  • У SQL Server додайте атрибут NOT NULL до стовпця в інструкції CREATE TABLE.

Перевірка на Null-значення в реченні WHERE

Використовуйте предикати порівняння IS NULL і IS NOT NULL.

  • В Access використовуйте IS NULL або IS NOT NULL. Наприклад:

    SELECT … WHERE column IS NULL.
  • В SQL Server використовуйте IS NULL або IS NOT NULL. Наприклад:

    SELECT … WHERE field IS NULL

Перетворення функцій із Null-значеннями

Використовуйте функції Null, щоб захищати вирази та повертати альтернативні значення.

  • В Access використовуйте функцію NZ (value, [valueifnull]), яка повертає 0 або інше значення. Наприклад:

    SELECT AVG (NZ (Weight, 50) ) FROM Product
  • У SQL Server використовуйте функцію ISNULL(Value, replacement_value), яка повертає 0 або інше значення. Наприклад:

    SELECT AVG (ISNULL (Weight, 50)) FROM Product

Основні відомості про параметри бази даних

Деякі системи баз даних мають особливі механізми.

  • У програмі Access немає параметрів бази даних з Null-значенням.

  • У SQL Server можна скористатися параметром SET ANSI_NULLS OFF для прямих порівнянь рівності з Null-значенням за допомогою операторів = і < >. Радимо не використовувати цей параметр, тому що він застарілий і може заплутати інших користувачів, які дотримуються стандартів ISO, працюючи з Null-значенням.

Перетворення та передавання

Під час роботи з даними або програмування існує постійна потреба перетворювати один тип даних на інший. Процес перетворення може бути простим або складним. Зверніть увагу на таке: явні та неявні перетворення, поточні параметри дати й часу, округлення або скорочення чисел, а також розмір типу даних. Ніщо не замінить ретельне тестування та підтвердження результатів.

В Access використовуються функції перетворення типу, кожна з яких починається на літеру C. Їх одинадцять (по одній для кожного типу даних). Наприклад, ось як перетворити число з рухомою комою на рядок.

CStr(437.324) returns the string "437.324".

У SQL Server здебільшого використовуються функції TSQL CAST і CONVERT, хоча також існують інші функції перетворення для спеціальних цілей. Наприклад, ось як перетворити число з рухомою комою на рядок.

CONVERT(TEXT, 437.324) returns the string "437.324"

Функції DateAdd, DateAdd і DateAdd

Ці найпоширеніші функції дат (DateAdd, DateAdd і DateAdd) подібні у програмах Access і TSQL, але використання першого аргументу відрізняється.

  • У програмі Access перший аргумент називається interval. Це рядковий вираз, який слід брати в лапки.

  • У програмі SQL Server перший аргумент називається datepart. У ньому використовуються значення ключових слів, які не потребують лапок.

    Компонент

    Access

    SQL Server

    Рік

    "yyyy"

    year, yy, yyyy

    Квартал

    "q"

    quarter, qq, q

    Місяць

    "m"

    month, mm, m

    День року

    "y"

    dayofyear, dy, y

    День

    "d"

    day, dd, d

    Тиждень

    "ww"

    wk, ww

    День тижня

    "w"

    weekday, dw

    Години

    "h"

    hour, hh

    Хвилини

    "n"

    minute, mi, n

    Секунди

    "s"

    second, ss, s

    Мілісекунди

    millisecond, ms

Порівняння функцій

Запити в Access можуть містити обчислювані стовпці, які іноді використовують функції Access, щоб отримати результати. Якщо запити перенесено до сервера SQL Server, потрібно замінити функцію Access на еквіваленту функцію TSQL, якщо вона доступна. Якщо відповідної функції TSQL немає, зазвичай можна створити обчислюваний стовпець, щоб виконати потрібні дії. Мова TSQL має широкий спектр функцій, і ви зможете дізнатися, які з них доступні. Докладні відомості див. в статті Функції бази даних SQL.

У таблиці нижче показано відповідність функцій Access до функцій TSQL.

Категорія Access

Функція Access

Функція TSQL

Перетворення

Функція Chr

CHAR

Перетворення

Функція Day

DAY

Перетворення

Функція FormatNumber

FORMAT

Перетворення

Функція FormatPercent

FORMAT

Перетворення

Функція Str

STR

Перетворення

Функції перетворення типу

CAST і CONVERT

Дата й час

Функція Date

CURRENT_TIMESTAMP

Дата й час

Функція Day

DATEFROMPARTS

Дата й час

Функція DateAdd

DATEADD

Дата й час

Функція DateDiff

DATEDIFF

DATEDIFF_BIG

Дата й час

Функція DatePart

DATEPART

Дата й час

Функція DateSerial

DATEFROMPARTS

Дата й час

Функція DateValue

DATENAME

Дата й час

Функція Hour

TIMEFROMPARTS

Дата й час

Функція Minute

TIMEFROMPARTS

Дата й час

Функція Month

MONTH

Дата й час

Функція Now

SYSDATETIME

Дата й час

Функція Second

TIMEFROMPARTS

Функція Time

TIMEFROMPARTS

Дата й час

Функція TimeSerial

TIMEFROMPARTS

Дата й час

Функція Weekday

DATEPART

DATENAME

Дата й час

Функція Year

YEAR

DATEFROMPARTS

Агрегатні функції домену

Функції DFirst і DLast

FIRST_VALUE

LAST_VALUE

Математичний вираз

Функція Abs

ABS

Математичний вираз

Функція Atn

ATAN

ATN2

Математичний вираз

Функція Cos

COS

ACOS

Математичний вираз

Функція Exp

EXP

Математичний вираз

Функція Int, Fix

FLOOR

Математичний вираз

Функція Log

LOG

LOG10

Математичний вираз

Функція Rnd

RAND

Математичний вираз

Функція Round

ROUND

Математичний вираз

Функція Sgn

SIGN

Математичний вираз

Функція Sin

SIN

Математичний вираз

Функція Sqr

SQRT

Перебіг програми

Функція Choose

CHOOSE

Перебіг програми

Функція IIf

IIF

Статистичні функції

Функція Avg

AVG

Статистичні функції SQL

Функція Count

COUNT

COUNT_BIG

Статистичні функції SQL

Функції Min, Max

MIN

MAX

Статистичні функції SQL

Функції StDev, StDevP

STDEV

STDEVP

Статистичні функції SQL

Функція Sum

SUM

Статистичні функції SQL

Функції Var, VarP

VAR

VARP

Текст

Функція Format

FORMAT

Текст

Функція LCase

LOWER

Текст

Функція Left

LEFT

Текст

Функція Len

LEN

Текст

Функції LTrim, RTrim і Trim

TRIM

LTRIM

RTRIM

Текст

Функція Replace

REPLACE

Текст

Функція Right

RIGHT

Текст

Функція StrReverse

REVERSE

Текст

Функція UCase

UPPER

Потрібна додаткова довідка?

Потрібні додаткові параметри?

Ознайомтеся з перевагами передплати, перегляньте навчальні курси, дізнайтесь, як захистити свій пристрій тощо.

Спільноти допомагають ставити запитання й відповідати на них, надавати відгуки та дізнаватися думки висококваліфікованих експертів.