Poređenje Access SQL sa uslugom SQL Server TSQL
Applies ToAccess za Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Ako migrirate Access podatke u SQL Server ili kreirate Access rešenje sa sistemom SQL Server kao pozadinskom bazom podataka, važno je da znate razlike između Access SQL i SQL Server Transact SQL (TSQL). Slede važne varijacije koje treba da znate da bi rešenje funkcionisalo kao što je predviđeno.

Više informacija potražite u člancima Access SQL: osnovni koncepti, rečnik i sintaksai Transact-SQL referenca.

Razlike u sintaksi i izrazima

Postoji nekoliko razlika u sintaksi i izrazima koje zahtevaju konverziju. Sledeća tabela navodi najčešće razlike.

Razlika

Access SQL

SQL Server TSQL

Atribut relacione baze podataka

Obično se naziva polje

Obično se naziva kolona

Doslovne niske

Znaci navoda ("), kao na primer "Meri Q. Suprotno"

Apostrof ('), kao na primer 'Meri Q. Suprotno'

Doslovni datumi

Znak funte (#), kao na primer #1/1/2019#

Apostrof ('), kao na primer '1/1/2019'

Više džoker znakova

Zvezdica (*), kao na primer "Cath *"

Procenat (%), kao na primer "Cath%"

Jedan džoker znak

Znak pitanja (?), kao na primer "Cath?"

Donja crta (_), kao na primer "Cath_"

Modulo operator

MOD operater, kao što je Vrednost1 MOD Vrednost2

Procenat (%), kao što je Vrednost1 % Vrednost2

Logičke vrednosti

WHERE Bitvalue = [True | False]

Ili

WHERE Bitvalue = [-1 | 0]

WHERE Bitvalue = [1 | 0]

Parametri

[< ime koje nije definisana kolona >]

Ili

U SQL prikazu, koristite Deklaraciju SQL parametara

@ParamName

Napomene   

  • Access koristi znake navoda (") oko imena tabele i objekata. T-SQL može da ih koristi za imena tabela sa razmacima, ali to nije standardna praksa za imenovanje. U većini slučajeva, imena objekata treba da se preimenuju tako da ne sadrže razmake, ali upiti moraju takođe da se ponovo napišu da bi odražavali nova imena tabela. Koristite zagrade [ ] za tabele koje se ne mogu preimenovati, ali koje nisu usklađene sa standardom za imenovanje. Access dodaje i dodatne zagrade oko parametara u upitima, ali one mogu da se uklone u programu T-SQL.

  • Razmislite o korišćenju kanonskog formata datuma, yyyy-mm-dd hh:nn:ss, koji predstavlja ODBC standard za datume uskladištene u vidu znakova i koji obezbeđuje dosledan način za njihovo predstavljanje kroz baze podataka i čuva redosled sortiranja datuma.

  • Da biste izbegli konfuziju pri poređenju logičkih vrednosti, možete da koristite sledeće poređenje za Access i SQL Server:

    • Testiranje netačne vrednosti    WHERE Bitvalue = [0 | 0]

    • Testiranje tačne vrednosti    WHERE Bitvalue <> 0

Bez vrednosti

Vrednost „nula” nije prazno polje koje znači „nema vrednosti“. Vrednost „nula” je čuvar mesta koji označava podatke koji nedostaju ili su nepoznati. Sistemi baze podataka koji prepoznaju vrednosti „nula” primenjuju „trodimenzionalnu logiku”, što znači da nešto može da bude tačno, netačno ili nepoznato. Ako ne rukujete ispravno vrednostima „nula”, možete da dobijete netačne rezultate kada pravite poređenje po jednakosti ili procenjujete WHERE odredbe. Evo poređenja načina na koji Access i SQL Server rade sa vrednostima „nula”.

Onemogućavanje vrednosti „nula” u tabeli

u programu Access i SQL Server podrazumevano je da su omogućene vrednosti „nula”. Da biste onemogućili vrednosti „nula” u koloni tabele, uradite sledeće:

  • U programu Access, postavite Obavezno svojstvo polja na vrednost „Da”.

  • U sistemu SQL Server, dodajte atribut NOT NULL u kolonu u izjavi CREATE TABLE.

Testiranje vrednosti „nula” u odredbi WHERE

Upotreba „IS NULL” i „IS NOT NULL” predikate poređenja:

  • U programu Access, koristite „IS NULL” ili „IS NOT NULL”. Na primer:

    SELECT … WHERE column IS NULL.
  • U sistemu SQL server, koristite „IS NULL” ili „IS NOT NULL”. Na primer:

    SELECT … WHERE field IS NULL

Konverzija vrednosti „nula” pomoću funkcija

Koristite funkcije NULL za zaštitu izraza i vraćanje alternativnih vrednosti:

  • U programu Access koristite funkciju NZ (value, [valueifnull]) koja daje 0 ili drugu vrednost. Na primer:

    SELECT AVG (NZ (Weight, 50) ) FROM Product
  • U sistemu SQL Server koristite funkciju ISNULL(Value, replacement_value) koja daje 0 ili drugu vrednost. Na primer:

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

Razumevanje opcija baze podataka

Neki sistemi baze podataka imaju vlasničke mehanizme:

  • U programu Access ne postoje opcije baze podataka koje se odnose na nulu.

  • U sistemu SQL Server možete da koristite opciju „SET ANSI_NULLS OFF” za direktno poređenje jednakosti sa nulom korišćenjem operatora = i <>. Preporučujemo da izbegnete korišćenje ove opcije zato što je ona zastarela i može da zbuni druge koji se oslanjaju na rukovanje nulom usaglašeno sa ISO standardom.

Konverzija i kasting

Svaki put kada radite sa podacima ili programirate, postoji stalna potreba za konvertovanjem iz jednog tipa podataka u drugi. Proces konverzije može da bude jednostavan ili kompleksan. Uobičajeni problemi o kojima treba da razmišljate jesu: implicitna ili eksplicitna konverzija, tekuće regionalne postavke datuma i vremena, zaokruživanja ili skraćivanje brojeva i veličina tipa podataka. Nema zamene za detaljno testiranje i potvrdu rezultata.

U programu Access koristite funkcije za konvertovanje tipova, kojih ima jedanaest, svaka od njih počinje slovom C, po jedna za svaki tip podataka. Na primer, da biste broj sa pokretnim zarezom pretvorili u niz:

CStr(437.324) returns the string "437.324".

U sistemu SQL Server, uglavnom koristite CAST i CONVERT TSQL funkcije, mada postoje i druge funkcije za konvertovanje za specijalizovane potrebe. Na primer, da biste broj sa pokretnim zarezom pretvorili u niz:

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

Funkcije „DateAdd”, „DateDiff” i „DatePart”

Ove najčešće korišćene funkcije za datum su slične (DateAdd, DateDiff i DatePart) u programu Access i TSQL, ali se razlikuje upotreba prvog argumenta.

  • U programu Access, prvi argument se naziva intervali predstavlja izraz niza koji zahteva navodnike.

  • U sistemu SQL Server, prvi argument se naziva dateparti on koristi vrednosti ključne reči koje ne zahtevaju navodnike.

    Komponenta

    Access

    SQL Server

    Godina

    „yyyy”

    year, yy, yyyy

    Kvartal

    „q”

    kvartal, qq, q

    Mesec

    „m”

    month, mm, m

    Dan u godini

    „y”

    dayofyear, dy, y

    Dan

    „d”

    day, dd, d

    Sedmica

    „ww”

    wk, ww

    Dan sedmice

    „w“

    weekday, dw

    Čas

    „h“

    hour, hh

    Minut

    „n”

    minute, mi, n

    Sekunda

    „s“

    second, ss, s

    Milisekunda

    millisecond, ms

Poređenje funkcija

Access upiti mogu da sadrže izračunate kolone koje ponekad koriste Access funkcije da dobiju rezultate. Kada migrirate upite u SQL Server, morate da zamenite Access funkciju sa ekvivalentom TSQL funkcijom ako je dostupna. Ako ne postoji odgovarajuća TSQL funkcija, obično možete da kreirate izračunatu kolonu (TSQL termin koji se koristi za izračunatu kolonu) da biste uradili ono što želite. TSQL ima široku lepezu funkcija vrlo je korisno da vidite šta je dostupno. Više informacija potražite u članku Šta su to funkcije SQL baze podataka?.

Sledeća tabela prikazuje koja Access funkcija ima odgovarajuću TSQL funkciju.

Kategorija Access

Funkcija Access

TSQL funkcija

Konvertovanje

Funkcija „Chr”

CHAR

Konvertovanje

Funkcija „Day”

DAN

Konvertovanje

Funkcija „FormatNumber”

OBLIKOVANJE

Konvertovanje

Funkcija „FormatPercent“

OBLIKOVANJE

Konvertovanje

Funkcija „Str“

STR

Konvertovanje

Funkcije za konverziju tipa

CAST i CONVERT

Datum/vreme

Funkcija „Date”

CURRENT_TIMESTAMP

Datum/vreme

Funkcija „Day”

DATEFROMPARTS

Datum/vreme

Funkcija „DateAdd“

DATEADD

Datum/vreme

Funkcija „DateDiff”

DATEDIFF

DATEDIFF_BIG

Datum/vreme

Funkcija „DatePart”

DATEPART

Datum/vreme

Funkcija „DateSerial”

DATEFROMPARTS

Datum/vreme

Funkcija „DateValue”

DATENAME

Datum/vreme

Funkcija „Hour”

TIMEFROMPARTS

Datum/vreme

Funkcija „Minute”

TIMEFROMPARTS

Datum/vreme

Funkcija „Month”

MONTH

Datum/vreme

Funkcija „Now”

SYSDATETIME

Datum/vreme

Funkcija „Second”

TIMEFROMPARTS

Funkcija „Time”

TIMEFROMPARTS

Datum/vreme

Funkcija „TimeSerial”

TIMEFROMPARTS

Datum/vreme

Funkcija „Weekday”

DATEPART

DATENAME

Datum/vreme

Funkcija „Year”

YEAR

DATEFROMPARTS

Skup domena

Funkcije „DFirst” i „DLast”

FIRST_VALUE

LAST_VALUE

Matematika

Funkcija „Abs”

ABS

Matematika

Funkcija „Atn”

ATAN

ATN2

Matematika

Funkcija „Cos”

COS

ACOS

Matematika

Funkcija „Exp”

EXP

Matematika

Funkcije „Int” i „Fix”

FLOOR

Matematika

Funkcija „Log”

LOG

LOG10

Matematika

Funkcija „Rnd”

RAND

Matematika

Funkcija „Round”

ROUND

Matematika

Funkcija „Sgn”

SIGN

Matematika

Funkcija „Sin”

SIN

Matematika

Funkcija „Sqr”

SQRT

Tok programa

Funkcija „Choose”

CHOOSE

Tok programa

Funkcija „IIf”

IIFhttps://docs.microsoft.com/sql/t-sql/functions/logical-functions-iif-transact-sql?view=sql-server-2017

Statističke

Funkcija „Avg”

AVG

SQL Aggregate

Funkcija „Count”

COUNT

COUNT_BIG

SQL Aggregate

Funkcije „Min”, „Max”

MIN

MAX

SQL Aggregate

Funkcije „StDev”, „StDevP”

STDEV

STDEVP

SQL Aggregate

Funkcija „Sum”

SUM

SQL Aggregate

Funkcije „Var”, „VarP”

VAR

VARP

Tekst

Funkcija Format

FORMAT

Tekst

Funkcija „LCase”

LOWER

Tekst

Funkcija „Left”

LEFT

Tekst

Funkcija „Len”

LEN

Tekst

Funkcije „LTrim”, „RTrim” i „Trim”

TRIM

LTRIM

RTRIM

Tekst

Funkcija „Replace”

REPLACE

Tekst

Funkcija „Right”

RIGHT

Tekst

Funkcija „StrReverse”

REVERSE

Tekst

Funkcija „UCase”

UPPER

Da li vam je potrebna dodatna pomoć?

Želite još opcija?

Istražite pogodnosti pretplate, pregledajte kurseve za obuku, saznajte kako da obezbedite uređaj i još mnogo toga.

Zajednice vam pomažu da postavljate pitanja i odgovarate na pitanja, dajete povratne informacije i čujete mišljenje od stručnjaka sa bogatim znanjem.