Č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 |
||
Pretvorba |
||
Pretvorba |
||
Pretvorba |
||
Pretvorba |
||
Pretvorba |
||
Datum/čas |
||
Datum/čas |
||
Datum/čas |
||
Datum/čas |
||
Datum/čas |
||
Datum/čas |
||
Datum/čas |
||
Datum/čas |
||
Datum/čas |
||
Datum/čas |
||
Datum/čas |
||
Datum/čas |
||
Datum/čas |
||
Datum/čas |
||
Datum/čas |
||
Združevanje domene |
||
Matematika |
||
Matematika |
||
Matematika |
||
Matematika |
||
Matematika |
||
Matematika |
||
Matematika |
||
Matematika |
||
Matematika |
||
Matematika |
||
Matematika |
||
Potek programa |
||
Potek programa |
||
Statistika |
||
Združevanje SQL |
||
Združevanje SQL |
||
Združevanje SQL |
||
Združevanje SQL |
||
Združevanje SQL |
||
Besedilo |
||
Besedilo |
||
Besedilo |
||
Besedilo |
||
Besedilo |
||
Besedilo |
||
Besedilo |
||
Besedilo |
||
Besedilo |