Access SQL un SQL Server TSQL salīdzinājums
Applies ToAccess pakalpojumam Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

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

Funkcija Chr

CHAR

Konvertēšana

Funkcija Day

DAY

Konvertēšana

Funkcija FormatNumber

FORMAT

Konvertēšana

Funkcija FormatPercent

FORMAT

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

DATENAME

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

DATENAME

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

FORMAT

Teksts

Funkcija LCase

LOWER

Teksts

Funkcija Left

LEFT

Teksts

Funkcija Len

LEN

Teksts

Funkcijas LTrim, RTrim un Trim

TRIM

LTRIM

RTRIM

Teksts

Funkcija Replace

REPLACE

Teksts

Funkcija Right

RIGHT

Teksts

Funkcija StrReverse

REVERSE

Teksts

Funkcija UCase

UPPER

Nepieciešama papildu palīdzība?

Vēlaties vairāk opciju?

Izpētiet abonementa priekšrocības, pārlūkojiet apmācības kursus, uzziniet, kā aizsargāt ierīci un veikt citas darbības.

Kopienas palīdz uzdot jautājumus un atbildēt uz tiem, sniegt atsauksmes, kā arī saņemt informāciju no ekspertiem ar bagātīgām zināšanām.