Primerjava strežnika Access SQL z jezikom TSQL strežnika SQL Server
Applies ToAccess za Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Če želite preseliti Accessove podatke v SQL Server ali ustvariti rešitev za Access s strežnikom SQL Server z zaledno zbirko podatkov, morate poznati razlike med strežnikom Access SQL in jezikom Transact SQL za strežnik SQL Server. 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:

    • Preizkus za vrednost false    WHERE Bitvalue = 0

    • Preizkus za vrednost true    WHERE Bitvalue <> 0

Ničelna vrednost

Ničelna vrednost ni prazno polje, ki bi pomenilo »brez katere koli vrednosti«. Ničelna vrednost predstavlja označbo mesta in pomeni, da podatki manjkajo ali niso znani. Sistemi zbirk podatkov, ki prepoznajo ničelno vrednost, uvedejo »logiko s tremi vrednostmi«, kar pomeni, da ima niz lahko vrednost true, false ali unknown. Če ničelnih vrednosti ne obravnavate pravilno, lahko dobite nepravilne rezultate pri primerjavah enakosti ali ovrednotenju 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 strežniku SQL Server lahko z možnostjo SET ANSI_NULLS OFF izvedete neposredne primerjave z vrednostjo NULL in operatorjema = ter <>. 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 nadomestila za temeljito preskušanje 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 strežniku SQL Server večinoma uporabite funkciji TSQL CAST in CONVERT, čeprav obstajajo druge funkcije za pretvorbo za posebne zahteve. Č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 ga je treba obdati v narekovaje.

  • V strežniku SQL Server je prvi argument datepart, ki 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 na voljo nobene ustrezne funkcije TSQL, lahko običajno ustvarite izračunani stolpec, da omogočite želeno opravilo. TSQL ima vgrajene številne funkcije. Oglejte si, kaj vse je na voljo. Če želite več informacij, preberite Katere 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

DAY

Pretvorba

Funkcija FormatNumber

FORMAT

Pretvorba

Funkcija FormatPercent

FORMAT

Pretvorba

Funkcija Str

STR

Pretvorba

Funkcije za pretvarjanje podatkovnih tipov

CAST in CONVERT

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

Datum/čas

Funkcija Hour

TIMEFROMPARTS

Datum/čas

Funkcija Minute

TIMEFROMPARTS

Datum/čas

Funkcija Month

MONTH

Datum/čas

Funkcija Now

SYSDATETIME

Datum/čas

Funkcija Second

TIMEFROMPARTS

Funkcija Time

TIMEFROMPARTS

Datum/čas

Funkcija TimeSerial

TIMEFROMPARTS

Datum/čas

Funkcija Weekday

DATEPART

DATENAME

Datum/čas

Funkcija Year

YEAR

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

Besedilo

Funkcija Format

FORMAT

Besedilo

Funkcija LCase

LOWER

Besedilo

Funkcija Left

LEFT

Besedilo

Funkcija Len

LEN

Besedilo

Funkcije LTrim, RTrim in Trim

TRIM

LTRIM

RTRIM

Besedilo

Funkcija Replace

REPLACE

Besedilo

Funkcija Right

RIGHT

Besedilo

Funkcija StrReverse

REVERSE

Besedilo

Funkcija UCase

UPPER

Ali potrebujete dodatno pomoč?

Ali želite več možnosti?

Raziščite ugodnosti naročnine, prebrskajte izobraževalne tečaje, preberite, kako zaščitite svojo napravo in še več.

Skupnosti vam pomagajo postaviti vprašanja in odgovoriti nanje, posredovati povratne informacije in prisluhniti strokovnjakom z bogatim znanjem.