Ja migrējat Access datus uz SQL Server vai izveidojat Access risinājumu ar SQL Server kā aizmugursistēmas datu bāzi, ir svarīgi zināt atšķirības starp Access SQL un SQL Server Transact SQL (TSQL). Tālāk ir norādītas svarīgas atšķirības, kas jāzina, lai risinājums darbotos, kā paredzēts.
Papildinformāciju skatiet rakstā Access SQL: pamatjēdzieņi, vārdnīca un sintakse un Transact-SQL atsauce.
Sintakses un izteiksmes atšķirības
Pastāv dažas sintakses un izteiksmes atšķirības, kam ir nepieciešama konvertēšana. Nākamajā tabulā ir norādītas visbiežāk sastopamās atšķirības.
Atšķirība |
Access SQL |
SQL Server TSQL |
Relāciju datu bāzes atribūts |
Parasti tiek dēvēts par lauku |
Parasti tiek dēvēts par kolonnu |
Virknes literāļi |
Pēdiņas ("), piemēram,"Mary Q. Contrary" |
Apostrofs ('), piemēram,'Mary Q. Contrary' |
Datuma literāļi |
Mārciņas zīme (#), piemēram, #1/1/2019# |
Apostrofs ('), piemēram, '1/1/2019' |
Vairākas aizstājējzīmes |
Zvaigznīte (*), piemēram, "Cath*" |
Procenti (%), piemēram, 'Cath%' |
Viena aizstājējzīme |
Jautājuma zīme (?), piemēram, "Cath?" |
Pasvītrojums (_), piemēram, "Cath_" |
Dalījuma atlikuma operators |
MOD operators, piemēram, Vērtība1 MOD Vērtība2 |
Procenti (%), piemēram, Vērtība1 % Vērtība2 |
Būla vērtības |
WHERE Bitvalue = [True | False] Vai WHERE Bitvalue = [-1 | 0] |
WHERE Bitvalue = [1 | 0] |
Parametri |
[<Nosaukums, kas nav definēta kolonna>] Vai SQL skatā izmantojiet SQL deklarāciju Parameters |
@ParamName |
Piezīmes
-
Programmā Access tiek izmantotas pēdiņas (") ap tabulu nosaukumiem un objektiem. T-SQL var tās izmantot tabulu nosaukumiem ar atstarpēm, bet šī nav standarta nosaukumu piešķiršanas prakse. Vairumā gadījumu objektu nosaukumi ir jāpārdēvē bez atstarpēm, taču vaicājumi arī ir jāpārraksta, lai atspoguļotu jaunos tabulu nosaukumus. Izmantojiet iekavas [ ] tabulām, kuras nevar pārdēvēt, bet kuras neatbilst nosaukumu piešķiršanas standartiem. Programma Access arī pievieno papildu iekavas vaicājumu parametros, bet tās var noņemt, izmantojot T-SQL.
-
Apsveriet iespēju izmantot kanonisko datuma formātu yyyy-mm-dd hh:nn:ss, kas ir ODBC standarts datumiem, kas tiek glabāti kā rakstzīmes, un nodrošina konsekventu veidu, kā tos attēlot vairākās datu bāzēs, kā arī saglabā datuma kārtošanas secību.
-
Lai izvairītos no pārpratumiem, salīdzinot Būla vērtības, varat izmantot tālāk norādīto salīdzinājumu programmai Access un SQL Server:
-
Pārbaudīt aplamu vērtību WHERE Bitvalue = 0
-
Pārbaudīt patiesu vērtību</c0>WHERE Bitvalue <> 0
-
Vērtības Null
Vērtība Null nav tukšs lauks, kas nozīmē "nav nekādas vērtības". Vērtība Null ir vietturis, kas nozīmē, ka trūkst datu vai tie nav zināmi. Datu bāzu sistēmas, kas atpazīst vērtības Null, īsteno "trīs vērtību loģiku", kas nozīmē, ka kaut kas var būt patiess, aplams vai nezināms. Ja nepareizi apstrādājat vērtības Null, varat iegūt nepareizus rezultātus, veicot vienlīdzības salīdzinājumus vai izvērtējot klauzulas WHERE. Tālāk ir sniegts salīdzinājums par to, kā Access un SQL Server izmanto vērtības Null.
Vērtību Null atspējošana tabulā
Programmā Access un SQL Server vērtības Null ir iespējotas pēc noklusējuma. Lai tabulas kolonnā atspējotu vērtības Null, veiciet tālāk norādītās darbības.
-
Programmā Access iestatiet lauka rekvizītu Required uz Jā.
-
Platformā SQL Server priekšraksta CREATE TABLE kolonnai pievienojiet atribūtu NOT NULL.
Vērtību Null pārbaudīšana klauzulā WHERE
Izmantojiet salīdzinājuma predikātus IS NULL un IS NOT NULL:
-
Programmā Access izmantojiet IS NULL vai IS NOT NULL. Piemērs.
SELECT … WHERE column IS NULL.
-
Platformā SQL SERVER izmantojiet IS NULL vai IS NOT NULL. Piemērs.
SELECT … WHERE field IS NULL
Vērtību Null pārvēršana, izmantojot funkcijas
Izmantojiet funkcijas Null, lai aizsargātu savas izteiksmes un atgrieztu alternatīvās vērtības:
-
Programmā Access izmantojiet funkciju NZ (value, [valueifnull]), kas atgriež vērtību 0 vai citu vērtību. Piemērs.
SELECT AVG (NZ (Weight, 50) ) FROM Product
-
Platformā SQL Server izmantojiet funkciju ISNULL(Value, replacement_value), kas atgriež vērtību 0 vai citu vērtību. Piemērs.
SELECT AVG (ISNULL (Weight, 50)) FROM Product
Datu bāzes opciju izpratne
Dažām datu bāzu sistēmām ir patentēti mehānismi:
-
Programmā Access nav datu bāzu opciju, kas attiecas uz vērtību Null.
-
Platformā SQL Server varat izmantot opciju SET ANSI_NULLS OFF, lai veiktu tiešas vienlīdzības salīdzinājumu, izmantojot vērtību NULL un operatorus = un <>. Iesakām nelietot šo opciju, jo tā ir novecojusi, un tas var maldināt citus lietotājus, kuri paļaujas uz ISO prasībām atbilstošu vērtību Null apstrādi.
Konvertēšana un izveide
Ikreiz, kad strādājat ar datiem vai programmēšanu, ir pastāvīgi nepieciešams konvertēt kādu datu tipu uz citu. Konvertēšanas process var būt vienkāršs vai sarežģīts. Bieži sastopamas problēmas, kas jāņem vērā: netieša vai tieša konversija, pašreizējie datuma un laika reģionālie iestatījumi, skaitļu noapaļošana vai saīsināšana un datu tipa lielumi. Vienmēr ir jāveic rūpīga pārbaude un rezultātu apstiprināšana.
Ja programmā Access izmantojat tipa konvertēšanas funkcijas (tādu ir vienpadsmit), katra no tām sākas ar burtu C, pa vienai katram datu tipam. Piemēram, lai skaitli ar peldošu komatu konvertētu uz virkni:
CStr(437.324) returns the string "437.324".
Platformā SQL Server parasti tiek izmantotas TSQL funkcijas CAST un CONVERT, lai gan pastāv citas konvertēšanas funkcijas īpašām vajadzībām. Piemēram, lai skaitli ar peldošu komatu konvertētu uz virkni:
CONVERT(TEXT, 437.324) returns the string "437.324"
Funkcijas DateAdd, DateDiff un DatePart
Šīs visbiežāk izmantotās datuma funkcijas ir līdzīgas (DateAdd, DateDiff un DatePart) programmā Access un TSQL, taču atšķiras pirmā argumenta lietošana.
-
Programmā Access pirmo argumentu dēvē par intervālu. Tā ir virknes izteiksme, kurai jālieto pēdiņas.
-
Platformā SQL Server pirmais arguments tiek dēvēts par datepart, un tas izmanto atslēgvārda vērtības, kurām nav nepieciešamas pēdiņas.
Komponents
Access
SQL Server
Gads
"yyyy"
year, yy, yyyy
Ceturksnis
"q"
quarter, qq, q
Mēnesis
"m"
month, mm, m
Gada diena
"y"
dayofyear, dy, y
Diena
"d"
day, dd, d
Nedēļa
"ww"
wk, ww
Nedēļas diena
"w"
weekday, dw
Stunda
"h"
hour, hh
Minūte
"n"
minute, mi, n
Sekunde
"s"
second, ss, s
Milisekunde
millisecond, ms
Funkciju salīdzinājums
Access vaicājumos var būt aprēķināmas kolonnas, kas dažkārt izmanto Access funkcijas, lai iegūtu rezultātus. Ja migrējat vaicājumus uz SQL Server, Access funkcija ir jāaizstāj ar līdzvērtīgu TSQL funkciju, ja tāda ir pieejama. Ja nepastāv atbilstoša TSQL funkcija, parasti var izveidot aprēķināto kolonnu (TSQL termins aprēķināmajai kolonnai), lai paveiktu vajadzīgās darbības. TSQL piedāvā plašu funkciju klāstu, un ir noderīgi zināt, kas ir pieejams. Papildinformāciju skatiet rakstā Kas ir SQL datu bāzes funkcijas?.
Tālāk redzamajā tabulā ir parādīts, kurām Access funkcijām ir atbilstošas TSQL funkcijas.
Access kategorija |
Access funkcija |
TSQL funkcija |
Konvertēšana |
||
Konvertēšana |
||
Konvertēšana |
||
Konvertēšana |
||
Konvertēšana |
||
Konvertēšana |
||
Datums/laiks |
||
Datums/laiks |
||
Datums/laiks |
||
Datums/laiks |
||
Datums/laiks |
||
Datums/laiks |
||
Datums/laiks |
||
Datums/laiks |
||
Datums/laiks |
||
Datums/laiks |
||
Datums/laiks |
||
Datums/laiks |
||
Datums/laiks |
||
Datums/laiks |
||
Datums/laiks |
||
Domēna apkopošana |
||
Matemātika |
||
Matemātika |
||
Matemātika |
||
Matemātika |
||
Matemātika |
||
Matemātika |
||
Matemātika |
||
Matemātika |
||
Matemātika |
||
Matemātika |
||
Matemātika |
||
Programmas plūsma |
||
Programmas plūsma |
||
Statistiska |
||
SQL apkopošana |
||
SQL apkopošana |
||
SQL apkopošana |
||
SQL apkopošana |
||
SQL apkopošana |
||
Teksts |
||
Teksts |
||
Teksts |
||
Teksts |
||
Teksts |
||
Teksts |
||
Teksts |
||
Teksts |
||
Teksts |