Primerjava strežnika Access SQL z jezikom TSQL strežnika SQL Server

Velja za
Access za Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Če Accessove podatke preselite v SQL Server ali ustvarite accessovo rešitev s storitvijo SQL Server kot za back-end zbirko podatkov, morate poznati razlike med strežnikom Access SQL in strežnikom SQL Server Transact SQL (TSQL). V nadaljevanju si boste ogledali pomembne razlike, na katere morate biti pozorni, če želite, da bo vaša rešitev delovala po pričakovanjih.

Če želite več informacij, glejte Access SQL: osnovni pojmi, besednjak in sintaksa ter Sklic transact-SQL.

Razlike v sintaksi in izrazih

Obstaja nekaj razlik v sintaksi in izrazih, ki jih je treba pretvoriti. V naslednji tabeli so navedene najpogostejše.

Razlika Access SQL SQL Server TSQL
Atribut relacijske zbirke podatkov Po navadi ga imenujemo polje Po navadi ga imenujemo stolpec
Dobesedni nizi Citat ("), kot je "Mary Q. Contrary" Opuščaj ('), kot je 'Mary Q. Contrary'
Dobesedni datumi Znak za funt (#), kot je #1/1/2019 # Opuščaj ('), kot je ' 1/1/2019 '
Večznakovni nadomestni znak Zvezdica (*), kot je »Cath*« Odstotek (*), kot je »Cath%«
Posamezni nadomestni znak Vprašaj (?), kot je »Cath?« Podčrtaj (_), denimo »Cath_«
Operator modulo Operator MOD, kot je Value1 MOD Value2 Odstotek (%), kot je value1% Value2
Logične vrednosti WHERE Bitvalue = [True | False]
Ali
WHERE Bitvalue = [-1 | 0]
WHERE Bitvalue = [1 | 0]
Parametri [<Ime, ki ni določen stolpec>]
ali
V pogledu SQL uporabite deklaracijo parametrov SQL
@ParamName

Opombe

  • Access uporablja narekovaje (") okrog imen tabel in predmetov. T-SQL jih lahko uporabi za imena tabel s presledki, vendar to ni običajni način poimenovanja. V večini primerov imena predmetov preimenujte brez presledkov, prav tako morate ponovno napisati tudi poizvedbe, da odražajo nova imena tabel. Za tabele, ki jih ni mogoče preimenovati in niso skladne z običaji poimenovanja uporabite oglate oklepaje [ ]. Access prav tako doda dodatne oklepaje okrog parametrov v poizvedba, ki pa jih lahko izpustite v jeziku T-SQL.

  • Razmislite o kanonični obliki zapisa za datume, llll-mm-dd hh:mm:ss, ki predstavlja standard ODCB za datume, shranjene kot znake, in omogoča skladen način za predstavitev podatkov v zbirkah podatkov ter ohrani vrstni red razvrščanja datumov.

  • Če se želite izogniti zmedi pri poimenovanju logičnih vrednosti, uporabite to primerjavo za Access in SQL Server:

    • Preskus za vrednost false WHERE Bitvalue = 0
    • Test for true value WHERE Bitvalue <> 0

Ničelna vrednost

Ničelna vrednost ni prazno polje, ki pomeni »ni nobene vrednosti«. Ničelna vrednost predstavlja označbo mesta in pomeni, da podatki manjkajo ali niso znani. Sistemi zbirke podatkov, ki prepoznajo ničelne vrednosti, uvedejo »logiko s tremi vrednostmi«, kar pomeni, da je nekaj lahko »true«, »false« ali »neznano«. Če ničelnih vrednosti ne obravnavate pravilno, lahko dobite nepravilne rezultate pri primerjavah enakosti ali ocenjevanju stavkov WHERE. Tukaj si lahko ogledate primerjavo, kako Access in SQL Server obravnavata ničelne vrednosti.

Onemogočanje ničelnih vrednosti v tabeli

Ničelne vrednosti so privzeto omogočene v Accessu in strežniku SQL Server. Če želite onemogočiti ničelne vrednosti v stolpcu tabele, naredite to:

  • V Accessu nastavite lastnosti polja Zahtevano na »Da«.
  • V strežniku SQL Server dodajte atribut NOT NULL v stolpec izjave CREATE TABLE.

Preizkus ničelnih vrednosti v stavku WHERE

Uporabite predikata za primerjavo IS NULL in IS NOT NULL:

  • V Accessu uporabite IS NULL ali IS NOT NULL. Primer:

    SELECT … WHERE column IS NULL.
    
  • V strežniku SQL Server uporabite IS NULL ali IS NOT NULL. Primer:

    SELECT … WHERE field IS NULL
    

Pretvarjanje ničelnih vrednosti s funkcijami

Izraze zaščitite z ničelnimi funkcijami in vrnite nadomestne vrednosti:

  • V Accessu uporabite funkcijo NZ (Value, [valueifnull]), ki vrne 0 ali drugo vrednost. Primer:

    SELECT AVG (NZ (Weight, 50) ) FROM Product
    
  • V strežniku SQL Server uporabite funkcijo ISNULL (Value, replacement_value), ki vrne 0 ali drugo vrednost. Primer:

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

Razumevanje možnosti zbirke podatkov

Nekateri sistemi zbirke podatkov imajo lastniške mehanizme:

  • V Accessu ni možnosti zbirke podatkov, ki se nanašajo na ničelno vrednost.
  • V SQL Server lahko uporabite možnost SET ANSI_NULLS off za neposredne primerjave enakosti z ničelno vrednostjo z uporabo operatorjev = <> in operatorjev. Priporočamo, da te možnosti ne uporabljate, saj je zastarela in lahko zmede druge, ki se zanašajo na upravljanje ničelnih vrednosti, združljivo s standardom iSO.

Pretvorba in predvajanje

Ko delate s podatki ali programirate, morate podatke pogosto pretvarjati iz ene v drugo vrsto. Postopek pretvorbe je lahko preprost ali zapleten. Pogoste težave, na katere morate biti pozorni, so: implicitna ali eksplicitna pretvorba, lokalne nastavitve trenutnega datuma in časa, zaokroževanje in okrajšava števil ter velikosti podatkovnih tipov. Ni nadomestijo temeljitega testiranja in potrjevanje rezultatov.

V Accessu lahko uporabite Funkcije za pretvorbo vrst. Skupaj jih je 11, vsaka pa se začne s črko C, ena za vsak podatkovni tip. Če želite številko plavajoče vejice na primer pretvoriti v niz:


CStr(437.324) returns the string "437.324".

V SQL Server uporabljate predvsem funkciji CAST in CONVERT TSQL, čeprav obstajajo druge funkcije pretvorbe za posebne potrebe. Če želite številko plavajoče vejice na primer pretvoriti v niz:


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

Funkcije DateAdd, DateDiff in DatePart

Te pogosto uporabljene funkcije datuma so podobne funkcijam (DateAdd, DateDiff in DatePart) v Accessu in jeziku TSQL, vendar je prvi argument uporabljen drugače.

  • V Accessu se prvi argument imenuje interval in je izraz niza, ki zahteva narekovaje.

  • V SQL Server se prvi argument imenuje datepart in uporablja vrednosti ključnih besed, ki ne zahtevajo narekovajev.

    Komponenta Access SQL Server
    Leto »yyyy« year, yy, yyyy
    Četrtletje »q« quarter, qq, q
    Mesec »m« month, mm, m
    Dan v letu »y« dayofyear, dy, y
    Dan »d« day, dd, d
    Teden »ww« wk, ww
    Dan v tednu »w« weekday, dw
    Ura »h« hour, hh
    Minuta »n« minute, mi, n
    Sekunda »s« second, ss, s
    Milisekunda millisecond, ms

Primerjava funkcij

Accessove poizvedbe lahko vsebujejo izračunane stolpce, ki včasih za pridobivanje rezultatov uporabijo Accessove funkcije. Ko selite poizvedbe v SQL Server, morate zamenjati Accessove funkcije z enakovredno funkcijo TSQL, če je ta na voljo. Če ni ustrezne funkcije TSQL, lahko običajno ustvarite izračunan stolpec (izraz TSQL, ki se uporablja za izračunan stolpec), da naredite, kar želite. TSQL ima širok nabor funkcij in je v vašo korist, če si želite ogledati, kaj je na voljo. Če želite več informacij, glejte Kaj so funkcije zbirke podatkov SQL?

V spodnji tabeli si lahko ogledate, katera Accessova funkcija ima ustrezno funkcijo TSQL.

Kategorija dostopa Accessova funkcija Funkcija TSQL
Pretvorba Funkcija Chr CHAR
Pretvorba Funkcija Day DAN
Pretvorba Funkcija FormatNumber OBLIKA
Pretvorba Funkcija FormatPercent OBLIKA
Pretvorba Funkcija Str STR
Pretvorba Funkcije za pretvarjanje podatkovnih tipov PREDVAJAJ in PRETVORI
Datum/čas Funkcija Date CURRENT_TIMESTAMP
Datum/čas Funkcija Day DATEFROMPARTS
Datum/čas Funkcija DateAdd DATEADD
Datum/čas Funkcija DateDiff DATEDIFF
DATEDIFF_BIG
Datum/čas Funkcija DatePart DATEPART
Datum/čas Funkcija DateSerial DATEFROMPARTS
Datum/čas Funkcija DateValue DATENAME (IME DATUMA)
Datum/čas Funkcija Hour TIMEFROMPARTS
Datum/čas Funkcija Minute TIMEFROMPARTS
Datum/čas Funkcija Month MESEC
Datum/čas Funkcija Now SYSDATETIME
Datum/čas Funkcija Second TIMEFROMPARTS
Funkcija Time TIMEFROMPARTS
Datum/čas Funkcija TimeSerial TIMEFROMPARTS
Datum/čas Funkcija Weekday DATEPART
DATENAME (IME DATUMA)
Datum/čas Funkcija Year LETO
DATEFROMPARTS
Združevanje domene Funkciji DFirst in DLast FIRST_VALUE
LAST_VALUE
Matematika Funkcija Abs ABS
Matematika Funkcija Atn ATAN
ATN2
Matematika Funkcija Cos COS
ACOS
Matematika Funkcija Exp EXP
Matematika Funkcija Int, 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
Potek programa Funkcija Choose CHOOSE
Potek programa Funkcija IIf IIF
Statistika Funkcija Avg AVG
Združevanje SQL Funkcija Count COUNT
COUNT_BIG
Združevanje SQL Funkciji Min in Maxs MIN
MAX
Združevanje SQL Funkciji StDev in StDevP STDEV
STDEVP
Združevanje SQL Funkcija Sum SUM
Združevanje SQL Funkciji Var in VarP VAR
VARP
Text (Besedilo) Funkcija Format OBLIKA
Text (Besedilo) Funkcija LCase LOWER
Text (Besedilo) Funkcija Left LEVO
Text (Besedilo) Funkcija Len LEN (LEN)
Text (Besedilo) Funkcije LTrim, RTrim in Trim TRIM
LTRIM (LTRIM)
RTRIM (RTRIM)
Text (Besedilo) Funkcija Replace ZAMENJATI
Text (Besedilo) Funkcija Right PRAVICO
Text (Besedilo) Funkcija StrReverse POVRATNE
Text (Besedilo) Funkcija UCase UPPER