Č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:
-
Preizkus za vrednost false WHERE Bitvalue = 0
-
Preizkus za vrednost true 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 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 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 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 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 na voljo nobene ustrezne funkcije TSQL, lahko običajno ustvarite izračunani stolpec, da omogočite želeno opravilo. TSQL ima širok nabor funkcij in je v vašo korist, če si želite ogledati, kaj 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 |