Порівняння мови SQL у Access із мовою TSQL у SQL Server

Застосовується до
Access для Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

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

Докладні відомості див. у статтях 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.

    • Перевірка на значення хибності 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-значенням за допомогою операторів = і <> OFF. Радимо не використовувати цей параметр, тому що він застарілий і може заплутати інших користувачів, які дотримуються стандартів ISO, працюючи з Null-значенням.

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

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

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


CStr(437.324) returns the string "437.324".

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


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

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

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

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

  • У 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, який використовується для обчислюваного стовпця), щоб виконати потрібні дії. Мова TSQL має широкий спектр функцій, і ви зможете дізнатися, які з них доступні. Для отримання додаткових відомостей див. розділ "Основні відомості про функції бази даних SQL?".

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

Категорія Access Функція Access Функція TSQL
Перетворення Функція Chr CHAR
Перетворення Функція Day ДЕНЬ
Перетворення Функція FormatNumber ФОРМАТ ФОРМАТУ
Перетворення Функція FormatPercent ФОРМАТ ФОРМАТУ
Перетворення Функція 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 МІСЯЦЬ
Дата й час Функція Now SYSDATETIME
Дата й час Функція Second TIMEFROMPARTS
Функція Time TIMEFROMPARTS
Дата й час Функція TimeSerial TIMEFROMPARTS
Дата й час Функція Weekday DATEPART
DATENAME (НАЗВА ДАТИ)
Дата й час Функція 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 Середнє значення
Статистичні функції SQL Функція Count COUNT
COUNT_BIG
Статистичні функції SQL Функції Min, Max MIN
MAX
Статистичні функції SQL Функції StDev, StDevP STDEV
STDEVP
Статистичні функції SQL Функція Sum SUM
Статистичні функції SQL Функції Var, VarP VAR
VARP
Text (Текст) Функція Format ФОРМАТ ФОРМАТУ
Text (Текст) Функція LCase LOWER
Text (Текст) Функція Left ЗЛІВА
Text (Текст) Функція Len LEN
Text (Текст) Функції LTrim, RTrim і Trim TRIM
LTRIM
RTRIM (RTRIM)
Text (Текст) Функція Replace REPLACE (ЗАМІНИТИ)
Text (Текст) Функція Right ПРАВОРУЧ
Text (Текст) Функція StrReverse НАТИСКАННЯ ПОСИЛАННЯ
Text (Текст) Функція UCase UPPER