„Access SQL“ palyginimas su „SQL Server TSQL“
Applies To„Access“, skirta „Microsoft 365“ „Access 2024“ Access 2021 Access 2019 Access 2016

Jei perkelsite „Access“ duomenis į „SQL Server“ arba sukursite „Access“ sprendimą su „SQL Server“ kaip vidinę duomenų bazę, labai svarbu žinoti skirtumus tarp „Access SQL“ ir „SQL Server Transact SQL“ (TSQL). Nuo to priklauso skirtingų jūsų sprendimo variantų tinkamas veikimas.

Daugiau informacijos žr. "Access SQL": pagrindinės sąvokos, žodynas ir sintaksė bei "Transact-SQL" nuoroda.

Sintaksės ir reiškinių skirtumai

Yra keli sintaksės ir reiškinių skirtumai, kuriuos būtina konvertuoti. Toliau pateiktoje lentelėje apibendrinti dažniausi skirtumai.

Skirtumas

„Access SQL“

„SQL Server TSQL“

Sąryšinės duomenų bazės atributas

Paprastai vadinamas lauku

Paprastai vadinamas stulpeliu

Eilučių literalai

Kabutės ("), pvz.,"Miglė Bočkutė"

Apostrofas ('), pvz.,'Miglė Bočkutė'

Datų literalai

Svaro ženklas (#), pvz., #1/1/2019#

Apostrofas ('), pvz., '1/1/2019'

Kelių pakaitos simbolių ženklas

Žvaigždutė (*), pvz., "Janina*"

Procentas (%), pvz., 'Janina%'

Vieno pakaitos simbolio ženklas

Klaustukas (?), pvz., "Janina?"

Pabraukimo simbolis (_), pvz., "Janina_"

Liekanos operatorius

MOD operatorius, pvz., reikšmė1 MOD reikšmė2

Procentas (%), pvz., reikšmė1 % reikšmė2

Bulio logikos reikšmės

WHERE bito reikšmė = [Teisinga | Klaidinga]

Arba

WHERE bito reikšmė = [-1 | 0]

WHERE bito reikšmė = [1 | 0]

Parametrai

[<Pavadinimas, kuris nėra apibrėžtas stulpelis>]

Arba

SQL rodinyje naudokite SQL parametrų deklaraciją

@ParamName

Pastabos   

  • „Access“ naudoja kabučių simbolius (") aplink lentelės pavadinimus ir objektus. T-SQL gali juos naudoti lentelių pavadinimams su tarpais, bet tai nėra įprasta pavadinimų suteikimo praktika. Daugeliu atvejų objektų pavadinimai turi būti pervardijami be tarpų, tačiau užklausas taip pat būtina perrašyti, kad būtų atspindėti nauji lentelių pavadinimai. Lentelėms, kurių negalima pervardyti, tačiau kurios neatitinka pavadinimų suteikimo standartų, naudokite skliaustus [ ]. „Access“ taip pat prideda papildomų skliaustelių aplink užklausų parametrus, tačiau juos galima pašalinti T-SQL.

  • Apsvarstykite galimybę naudoti įprastą datų formatą MMMM-mm-dd hh: NN: SS, kuris yra ODBC standartas, skirtas datoms, saugomoms kaip simboliai, todėl nuosekliai vaizduoja datas duomenų bazėse ir išsaugo datų rūšiavimo tvarką.

  • Jei norite, kad lyginant Bulio logikos reikšmes nekiltų painiavos, galite naudoti šį „Access“ ir „SQL Server“ palyginimą:

    • Klaidingų reikšmių tikrinimas    WHERE bito reikšmė = 0

    • Teisingos reikšmės tikrinimas    WHERE bito reikšmė <> 0

Nulinės reikšmės

Nulinė reikšmė nėra tuščias laukas, kuris reiškia, kad „nėra jokios reikšmės“. Nulinė reikšmė yra vietos rezervavimo ženklas, kuris reiškia, kad duomenų trūksta arba jie nežinomi. Duomenų bazių sistemos, kurios atpažįsta nulines reikšmes, naudoja „trijų reikšmių logiką“, o tai reiškia, kad kažkas gali būti teisinga, klaidinga arba nežinoma. Jei netinkamai apdorojate nulines reikšmes, galite gauti neteisingų rezultatų atlikdami lygybės palyginimus arba vertindami WHERE reiškinius. Pateikiame „Access“ ir „SQL Server“ nulinių reikšmių tvarkymo palyginimą.

Nulinių reikšmių išjungimas lentelėje

„Access“ ir „SQL Server“ numatytoji patirtis yra ta, kad nulinės reikšmės yra įgalintos. Jei norite išjungti nulines reikšmes lentelės stulpelyje, atlikite šiuos veiksmus:

  • „Access“ nustatykite lauko Būtina ypatybę į Taip.

  • „SQL Server“ įtraukite atributą NOT NULL į stulpelį reiškinyje CREATE TABLE.

Nulinių reikšmių tikrinimas WHERE reiškinyje

Naudokite IS NULL ir IS NOT NULL palyginimo sąlygas:

  • „Access“ naudokite IS NULL arba IS NOT NULL. Pavyzdžiui:

    SELECT … WHERE column IS NULL.
  • „SQL Server“ naudokite IS NULL arba IS NOT NULL. Pavyzdžiui:

    SELECT … WHERE field IS NULL

Nulinių reikšmių konvertavimas naudojant funkcijas

Naudokite nulines funkcijas, kad apsaugotumėte savo reiškinius ir pateiktumėte alternatyvias reikšmes:

  • „Access“ naudokite funkciją NZ (reikšmė, [valueifnull]), kuri pateikia 0 arba kitą reikšmę. Pavyzdžiui:

    SELECT AVG (NZ (Weight, 50) ) FROM Product
  • „SQL Server“ naudokite funkciją ISNULL (reikšmė, replacement_value), kuri pateikia 0 arba kitą reikšmę. Pavyzdžiui:

    SELECT AVG (ISNULL (Weight, 50)) FROM Product

Duomenų bazės parinkčių supratimas

Kai kurios duomenų bazių sistemos turi nuosavybių mechanizmų:

  • „Access“ nėra jokių duomenų bazių parinkčių, kurios priklauso nuo Null.

  • „SQL Server“ tiesioginiam lygybės palyginimui su NULL naudojant = ir <> operatorius galima naudoti parinktį SET ANSI_NULLS OFF. Rekomenduojame nenaudoti šios pasirinkties, nes ji yra pasenusi ir gali klaidinti kitus, kurie naudoja ISO suderinamą nulinių reikšmių tvarkymo funkciją.

Konvertavimas ir liejimas

Kai dirbate su duomenimis arba programuojate, nuolat reikia konvertuoti vieno tipo duomenis į kito tipo duomenis. Konvertavimo procesas gali būti paprastas arba sudėtingas. Dažniausiai pasitaikantys punktai, kuriuos reikia apgalvoti, yra: numanomas arba aiškus konvertavimas, esamos datos ir laiko regiono parametrai, skaičių apvalinimas ar nurašymas ir duomenų tipo dydžiai. Būtina išsamiai patikrinti ir patvirtinti savo rezultatus.

„Access“ naudojate tipo konvertavimo funkcijas, kurių yra vienuolika, kiekviena prasideda raide C, po vieną kiekvienam duomenų tipui. Pvz., jei norite konvertuoti skaičių su slankiuoju kableliu į eilutę:

CStr(437.324) returns the string "437.324".

„SQL Server“ pirmiausia naudojate TSQL funkcijas CAST ir CONVERT, nors specialiems poreikiams yra kitų Konvertavimo funkcijų. Pvz., jei norite konvertuoti skaičių su slankiuoju kableliu į eilutę:

CONVERT(TEXT, 437.324) returns the string "437.324"

Funkcijos „DateAdd“, „DateDiff“ ir „DatePart“

Šios dažniausiai naudojamos datos funkcijos yra panašios („DateAdd“, „DateDiff“ ir „DatePart“) „Access“ ir TSQL, tačiau pirmo argumento naudojimas skiriasi.

  • „Access“ pirmasis argumentas vadinamas intervalu ir tai yra eilutės reiškinys, kuriam būtinos kabutės.

  • „SQL Server“ pirmasis argumentas vadinamas DatePart ir naudoja raktinių žodžių reikšmes, kurioms kabutės nebūtinos.

    Komponentas

    Access

    SQL Server

    Metai

    "yyyy"

    metai, yy, yyyy

    Ketvirtis

    "q"

    ketvirtis, qq, q

    Mėnuo

    „m“

    mėnuo, mm, m

    Metų diena

    „y“

    dayofyear, Dy, y

    Diena

    „d“

    diena, dd, d

    Savaitė

    "ww"

    wk, ww

    Savaitės diena

    "w"

    weekday, dw

    Valanda

    "h"

    valanda, hh

    Minutė

    "n"

    minute, mi, n

    Sekundė

    "s"

    second, ss, s

    Milisekundė

    millisecond, ms

Funkcijų palyginimas

„Access“ užklausose gali būti apskaičiuotų stulpelių, kurie rezultatams gauti kartais naudoja „Access“ funkcijas. Kai perkeliate užklausas į „SQL Server“, būtina pakeisti „Access“ funkciją lygiaverte TSQL funkcija, jei ji yra pasiekiama. Jei nėra atitinkamos TSQL funkcijos, tada paprastai galima sukurti apskaičiuojamąjį stulpelį (TSQL terminas, naudojamas apskaičiuojamajam stulpeliui), kad galėtumėte atlikti tai, ko norite. TSQL turi daug funkcijų ir naudinga sužinoti, ką galima atlikti. Daugiau informacijos žr. Kas yra SQL duomenų bazės funkcijos?.

Toliau pateiktoje lentelėje parodyta, kuri „Access“ funkcija turi atitinkamą TSQL funkciją.

„Access“ kategorija

„Access“ funkcija

TSQL funkcija

Konvertavimas

Chr funkcija

CHAR

Konvertavimas

Day funkcija

DAY

Konvertavimas

FormatNumber funkcija

FORMAT

Konvertavimas

FormatPercent funkcija

FORMAT

Konvertavimas

Str Funkcija

STR

Konvertavimas

Tipo konvertavimo funkcijos

CAST ir CONVERT

Data / laikas

Date funkcija

CURRENT_TIMESTAMP

Data / laikas

Day funkcija

DATEFROMPARTS

Data / laikas

DateAdd funkcija

DATEADD

Data / laikas

DateDiff funkcija

DATEDIFF

DATEDIFF_BIG

Data / laikas

DatePart funkcija

DATEPART

Data / laikas

DateSerial funkcija

DATEFROMPARTS

Data / laikas

DateValue funkcija

DATENAME

Data / laikas

Hour funkcija

TIMEFROMPARTS

Data / laikas

Minute funkcija

TIMEFROMPARTS

Data / laikas

Month funkcija

MONTH

Data / laikas

Now funkcija

SYSDATETIME

Data / laikas

Second funkcija

TIMEFROMPARTS

Time funkcija

TIMEFROMPARTS

Data / laikas

TimeSerial funkcija

TIMEFROMPARTS

Data / laikas

Weekday funkcija

DATEPART

DATENAME

Data / laikas

Year funkcija

YEAR

DATEFROMPARTS

Domeno agregavimas

DFirst, DLast funkcijos

FIRST_VALUE

LAST_VALUE

Matematika

Abs funkcija

ABS

Matematika

Atn funkcija

ATAN

ATN2

Matematika

Cos funkcija

COS

ACOS

Matematika

Exp funkcija

EXP

Matematika

Int, Fix funkcijos

FLOOR

Matematika

Log funkcija

LOG

LOG10

Matematika

Rnd funkcija

RAND

Matematika

Round funkcija

ROUND

Matematika

Sgn funkcija

SIGN

Matematika

Sin funkcija

SIN

Matematika

Sqr funkcija

SQRT

Programos srautas

Choose funkcija

CHOOSE

Programos srautas

IIf funkcija

IIF

Statistinės

Avg funkcija

AVG

SQL agregavimas

Count funkcija

COUNT

COUNT_BIG

SQL agregavimas

Min, Max funkcijos

MIN

MAX

SQL agregavimas

StDev, StDevP funkcijos

STDEV

STDEVP

SQL agregavimas

Sum funkcija

SUM

SQL agregavimas

Var, VarP funkcijos

VAR

VARP

Tekstas

Format funkcija

FORMAT

Tekstas

LCase funkcija

LOWER

Tekstas

Left funkcija

LEFT

Tekstas

Len funkcija

LEN

Tekstas

LTrim, RTrim ir Trim funkcijos

TRIM

LTRIM

RTRIM

Tekstas

Replace funkcija

REPLACE

Tekstas

Right funkcija

RIGHT

Tekstas

StrReverse funkcija

REVERSE

Tekstas

UCase funkcija

UPPER

Reikia daugiau pagalbos?

Norite daugiau parinkčių?

Sužinokite apie prenumeratos pranašumus, peržiūrėkite mokymo kursus, sužinokite, kaip apsaugoti savo įrenginį ir kt.

Bendruomenės padeda užduoti klausimus ir į juos atsakyti, pateikti atsiliepimų ir išgirsti iš ekspertų, turinčių daug žinių.