Poređenje Access SQL sa uslugom SQL Server TSQL

Primenjuje se na
Access 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, od vitalnog je značaja 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 članku Access SQL: Osnovni koncepti, rečnik i sintaksa i 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
    • 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 dobiti netačne rezultate prilikom pravljenja poređenja jednakosti ili procene odredbi WHERE. 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 SQL Server možete da koristite opciju SET ANSI_NULLS OFF za direktna poređenja jednakosti sa vrednošću NULL pomoću operatora = and<>. 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 TSQL funkcije CAST i CONVERT, mada postoje i druge funkcije za konverziju 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 interval i to je izraz niske koji zahteva navodnike.

  • U sistemu SQL Server prvi argument se naziva "datepart" i koristi vrednosti ključnih reči koje ne zahtevaju navodnike.

    Komponenta Pristup 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, onda obično možete da napravite izračunatu kolonu (TSQL termin koji se koristi za izračunatu kolonu) da biste radili šta ž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” FORMAT
Konvertovanje Funkcija „FormatPercent“ FORMAT
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” SORTIRAJ
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” MESEC
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” GODINA
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” ZNAK
Matematika Funkcija „Sin” SIN
Matematika Funkcija „Sqr” SQRT
Tok programa Funkcija „Choose” ODABERITE
Tok programa Funkcija „IIf” IIF
Statističke Funkcija „Avg” Umesto
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” LEVO
Tekst Funkcija „Len” LEN
Tekst Funkcije „LTrim”, „RTrim” i „Trim” TRIM
OMILjENO
OMILjENO
Tekst Funkcija „Replace” ZAMENA
Tekst Funkcija „Right” U PRAVU
Tekst Funkcija „StrReverse” PREOKRETANJE
Tekst Funkcija „UCase” UPPER