Če preselite Accessove podatke v SQL Server ali ustvarite Accessovo rešitev s strežnikom SQL Server kot zaledno zbirko podatkov, je pomembno, da poznate razlike med strežnikom Access SQL in 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 Sklici 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
- Preskus 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 obravnate pravilno, so lahko pri primerjavah enakosti ali pri vrednotenju stavkov WHERE prikazani nepravilni rezultati. 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 ProductV 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 neposredno primerjavo enakosti z vrednostjo NULL z operatorjema = in <> 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. Temeljito preskušanje in potrjevanje rezultatov ne morete nadomestiti.
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 uporabljate predvsem funkciji TSQL CAST in CONVERT, čeprav so na voljo tudi druge funkcije za pretvorbo 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 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 ustrezne funkcije TSQL, lahko običajno ustvarite izračunani stolpec (izraz TSQL, ki se uporablja za izračunani stolpec), da naredi to, kar želite. TSQL ponuja široko paleto funkcij in je v vašo korist, če si ogledate, kaj je na voljo. Če želite več informacij, si oglejte Kaj so funkcije zbirke podatkov SQL?
V spodnji tabeli si lahko ogledate, katera Accessova funkcija ima ustrezno funkcijo TSQL.