Access SQL un SQL Server TSQL salīdzinājums

Attiecas uz
Access pakalpojumam Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Ja migrējat savus Access datus uz SQL Server vai izveidojat Access risinājumu, izmantojot 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 sadaļā Access SQL: pamatjēdzieni, 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 patieso vērtību 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.
  • Programmā 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 =<>. 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".

Programmā SQL Server galvenokārt tiek izmantotas funkcijas CAST un CONVERT TSQL, lai gan ir arī citas konvertēšanas funkcijas konkrētā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 sauc par intervālu, un tā ir virknes izteiksme, kurai jālieto pēdiņas.

  • Programmā 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 sadaļā 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 Funkcija Chr CHAR
Konvertēšana Funkcija Day DAY
Konvertēšana Funkcija FormatNumber FORMĀTS
Konvertēšana Funkcija FormatPercent FORMĀTS
Konvertēšana Funkcija Str STR
Konvertēšana Tipa konvertēšanas funkcijas CAST un CONVERT
Datums/laiks Funkcija Date CURRENT_TIMESTAMP
Datums/laiks Funkcija Day DATEFROMPARTS
Datums/laiks Funkcija DateAdd DATEADD
Datums/laiks Funkcija DateDiff DATEDIFF
DATEDIFF_BIG
Datums/laiks Funkcija DatePart DATEPART
Datums/laiks Funkcija DateSerial DATEFROMPARTS
Datums/laiks Funkcija DateValue DATUMA NOSAUKUMS
Datums/laiks Funkcija Hour TIMEFROMPARTS
Datums/laiks Funkcija Minute TIMEFROMPARTS
Datums/laiks Funkcija Month MONTH
Datums/laiks Funkcija Now SYSDATETIME
Datums/laiks Funkcija Second TIMEFROMPARTS
Funkcija Time TIMEFROMPARTS
Datums/laiks Funkcija TimeSerial TIMEFROMPARTS
Datums/laiks Funkcija Weekday DATEPART
DATUMA NOSAUKUMS
Datums/laiks Funkcija Year YEAR
DATEFROMPARTS
Domēna apkopošana Funkcija DFirst un DLast FIRST_VALUE
LAST_VALUE
Matemātika Funkcija Abs ABS
Matemātika Funkcija Atn ATAN
ATN2
Matemātika Funkcija Cos COS
ACOS
Matemātika Funkcija Exp EXP
Matemātika Funkcija Int un Fix FLOOR
Matemātika Funkcija Log LOG
LOG10
Matemātika Funkcija Rnd RAND
Matemātika Funkcija Round ROUND
Matemātika Funkcija Sgn SIGN
Matemātika Funkcija Sin SIN
Matemātika Funkcija Sqr SQRT
Programmas plūsma Funkcija Choose CHOOSE
Programmas plūsma Funkcija IIf IIF
Statistiska Funkcija Avg AVG
SQL apkopošana Funkcija Count COUNT
COUNT_BIG
SQL apkopošana Funkcija Min un Max MIN
MAX
SQL apkopošana Funkcijas StDev, StDevP STDEV
STDEVP
SQL apkopošana Funkcija Sum SUM
SQL apkopošana Funkcijas Var, VarP VAR
VARP
Teksts Funkcija Format FORMĀTS
Teksts Funkcija LCase LOWER
Teksts Funkcija Left PA KREISI
Teksts Funkcija Len LEN
Teksts Funkcijas LTrim, RTrim un Trim TRIM
LTRIM
RTRIM
Teksts Funkcija Replace AIZSTĀT
Teksts Funkcija Right PA LABI
Teksts Funkcija StrReverse ATPAKAĻGAITĀ
Teksts Funkcija UCase UPPER