Access SQL-i ja SQL Server TSQL-i võrdlus
Applies ToMicrosoft 365 rakendus Access Access 2024 Access 2021 Access 2019 Access 2016

Kui migreerite Accessi andmeid SQL Serverisse või loote SQL Serveriga tagaandmebaasiks Accessi lahendust, peate teadma, kuidas Access SQL ja SQL Server Transact SQL (TSQL) erinevad. Järgnevalt tuuakse välja olulised erinevused, millega peate arvestama, et lahendus ootuspäraselt töötaks.

Lisateavet leiate teemadest Access SQL: põhimõisted, sõnavara ja süntaks ja Transact-SQL-i viide.

Süntaksi ja avaldise erinevused

Süntaksites ja avaldistes on mõned erinevused, mis nõuavad teisendamist. Järgmises tabelis on toodud levinumad.

Erinevus

Access SQL

SQL Server

Seotava andmebaasi atribuut

Nimetatakse tavaliselt väljaks

Nimetatakse tavaliselt veeruks

Stringiliteraalid

Jutumärgid ("), näiteks "Mary Q. Contrary"

Ülakoma ('), näiteks 'Mary Q. Contrary'

Kuupäevaliteraalid

Trellid (#), näiteks #1/1/2019#

Ülakoma ('), näiteks '1/1/2019'

Mitme metamärgi märk

Tärn (*), näiteks "Cath*"

Protsendimärk (%), näiteks 'Cath%'

Ühe metamärgi märk

Küsimärk (?), näiteks "Cath?"

Allkriips (_), näiteks "Cath_"

Moodultehtemärk

MOD-tehtemärk, näiteks Value1 MOD Value2

Protsendimärk (%),näiteks Value1 % Value2

Kahendväärtused

WHERE Bitvalue = [True | False]

või

WHERE Bitvalue = [-1 | 0]

WHERE Bitvalue = [1 | 0]

Parameetrid

[<A name that is not a defined column>]

või

SQL-vaates kasutage SQL-i parameetrite deklaratsiooni

@ParamName

Märkused   

  • Access kasutab tabelite nimede ja objektide ümber jutumärke ("). T-SQL võib neid kasutada tühikuid sisaldavate tabelinimede puhul, kuid standardina sellist nimetamisviisi ei kasutata. Enamasti tuleb objektinimed asendada tühikuteta nimedega. Päringud tuleb aga alati ümber kirjutada ja kasutada uusi tabelinimesid. Kui teil on ebastandardse nimega tabel, mida ei saa ümber nimetada, kasutage sulgusid [ ]. Access lisab päringutes parameetrite ümber ka lisasulud, kuid need saab T-SQL-is eemaldada.

  • Kaaluge võimalust kasutada ODBC standarditele vastavat kanoonilist kuupäevavormingut (yyyy-mm-dd hh:nn:ss), mis võimaldab andmeid ühtlaselt eri andmebaasides esitada ning tagab sortimisjärjestuse säilimise.

  • Kahendväärtuste võrdlemisel asjade segamini ajamise vältimiseks saate Accessi ja SQL Serveri andmeid järgmiselt võrrelda.

    • Väärtuse „FALSE“ testimine    WHERE Bitvalue = 0

    • Väärtuse „TRUE“ testimine    WHERE Bitvalue <> 0

Nullväärtused

Nullväärtus pole tühi väli, mille puhul väärtust polegi. Nullväärtus on kohatäide, mis viitab sellele, et andmed puuduvad või need on teadmata. Andmebaasid, mis tuvastavad nullväärtused, kasutavad nn kolme väärtuse loogikat, mis tähendab, et asjad saavad olla kas tõesed (TRUE), väärad (FALSE) või teadmata (UNKNOWN). Kui te ei arvesta nullväärtusi õigel moel, võite saada võrdluste tegemisel või WHERE-klauslite hindamisel valesid tulemeid. Siin võrreldakse, kuidas Access ja SQL Server tühiväärtuseid töötlevad.

Tabelis nullväärtuste keelamine

Accessis ja SQL-serveris on nullväärtused vaikimisi lubatud. Tabeliveerus nullväärtuste keelamiseks tehke järgmist.

  • Määrake Accessis välja Nõutav atribuudiks „Yes“.

  • LSQL Serveris lisage lause CREATE TABLE veerule atribuut NOT NULL.

Testige nullväärtusi WHERE-klauslis

Kasutage võrdluspredikaate IS NULL ja IS NOT NULL

  • Accessis valige IS NULL või IS NOT NULL. Näide.

    SELECT … WHERE column IS NULL.
  • SQL Serveris valige IS NULL või IS NOT NULL. Näide.

    SELECT … WHERE field IS NULL

Nullväärtuste teisendamine funktsioonidega

Kasutage avaldiste kaitsmiseks ja alternatiivsete väärtuste tagastamiseks nullfunktsioone.

  • Accessis kasutage funktsiooni NZ (value, [valueifnull]) või muud funktsiooni, mis tagastab 0-i või muu väärtuse. Näide.

    SELECT AVG (NZ (Weight, 50) ) FROM Product
  • SQL Serveris kasutage funktsiooni ISNULL(Value, replacement_value) või muud funktsiooni, mis tagastab 0-i või muu väärtuse. Näide.

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

Andmebaasi suvandid

Mõnedel andmebaasidel on omad mehhanismid.

  • Accessis ei ole andmebaasivõimalusi, mis seostuvad nulliga.

  • SQL Serveris saate valiku SET ANSI_NULLS OFF abil kasutada otsest võrdlemist NULLIGA tehtemärkide = ja < > abil. Soovitame seda võimalust pigem mitte kasutada, kuna see lahendus on iganenud ja võib tekitada segadust nende kasutajate puhul, kes rakendavad ISO nõuetele vastavat nullväärtuse töötlemist.

Teisendamine ja esitamine

Andmetega töötamise või programmeerimise korral tuleb pidevalt erinevaid andmetüüpe teisendada. Teisendamisprotsess võib olla lihtne või keerukas. Ennekõike peate tähelepanu pöörama järgmisele: kaudne või otsene teisendus, praegused kuupäeva- ja piirkondlikud sätted, numbrite ümardamine ja kärpimine ning andmetüübi suurused. Põhjalikule katsetamisele ja tulemuste kinnitamisele alternatiivi pole.

Accessis saate kasutada tüübiteisendusfunktsioone, mida on üksteist. Kõik algavad tähega C (üks iga andmetüübi jaoks). Näiteks ujupunkti stringiks teisendamiseks tehke järgmist.

CStr(437.324) returns the string "437.324".

SQL Serveris kasutage esimese valikuna funktsioone CAST ja CONVERT TSQL. On ka muid teisendamisfunktsioone teatud eriolukordades kasutamiseks. Näiteks ujupunkti stringiks teisendamiseks tehke järgmist.

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

Funktsioonid DateAdd, DateDiff ja DatePart

Need sageli kasutatavad Accessi ja TSQL-i funktsioonid (DateAdd, DateDiff ja DatePart) on muidu sarnased, kuid nende esimese argumendi rakendamine on erinev.

  • Accessis on esimese argumendi nimetus intervall. See on stringavaldis, mis nõuab jutumärke.

  • SQL Serveris on esimese argumendi nimi datepart. See kasutab märksõnalisi väärtusi, mille puhul jutumärke pole vaja.

    Komponent

    Access

    SQL Server

    Year (aasta)

    "yyyy"

    year, yy, yyyy

    Quarter (kvartal)

    "q"

    quarter, qq, q

    Month (kuu)

    "m"

    month, mm, m

    Day of Year (aasta päev)

    "y"

    dayofyear, dy, y

    Day (päev)

    "d"

    day, dd, d

    Week (nädal)

    "ww"

    wk, ww

    Nädalapäev

    "w"

    weekday, dw

    Hour (tund)

    "h"

    hour, hh

    Minute (minut)

    "n"

    minute, mi, n

    Second (sekund)

    "s"

    second, ss, s

    Millisecond (millisekund)

    millisecond, ms

Funktsioonide võrdlus

Accessi päringud võivad sisaldada arvutatavate väärtustega veerge, mis mõnikord kasutavad tulemite saamiseks Accessi funktsioone. Kui migreerite päringuid SQL serverisse, peate Accessi funktsiooni asendama samaväärse TSQL-i funktsiooniga (kui see on saadaval). luua arvutatava veeru. TSQL-il on palju funktsioone. Tutvuge nendega ja vaadake, millistest võiksite kasu lõigata. Lisateavet leiate teemast SQL- andmebaasi funktsioonid.

Järgmises tabelis on näidatud, millisel Accessi funktsioonil on olemas vastav TSQL-i funktsioon.

Accessi kategooria

Accessi funktsioon

Funktsioon TSQL

Teisendamine

Funktsioon Chr

CHAR

Teisendamine

Funktsioon Day

DAY

Teisendamine

Funktsioon FormatNumber

FORMAT

Teisendamine

Funktsioon FormatPercent

FORMAT

Teisendamine

Funktsioon Str

STR

Teisendamine

Tüübiteisendusfunktsioonid

CAST ja CONVERT

Kuupäev/kellaaeg

Funktsioon Date

CURRENT_TIMESTAMP

Kuupäev/kellaaeg

Funktsioon Day

DATEFROMPARTS

Kuupäev/kellaaeg

Funktsioon DateAdd

DATEADD

Kuupäev/kellaaeg

Funktsioon DateDiff

DATEDIFF

DATEDIFF_BIG

Kuupäev/kellaaeg

Funktsioon DatePart

DATEPART

Kuupäev/kellaaeg

Funktsioon DateSerial

DATEFROMPARTS

Kuupäev/kellaaeg

Funktsioon DateValue

DATENAME

Kuupäev/kellaaeg

Funktsioon Hour

TIMEFROMPARTS

Kuupäev/kellaaeg

Funktsioon Minute

TIMEFROMPARTS

Kuupäev/kellaaeg

Funktsioon Month

MONTH

Kuupäev/kellaaeg

Funktsioon Now

SYSDATETIME

Kuupäev/kellaaeg

Funktsioon Second

TIMEFROMPARTS

Funktsioon Time

TIMEFROMPARTS

Kuupäev/kellaaeg

Funktsioon TimeSerial

TIMEFROMPARTS

Kuupäev/kellaaeg

Funktsioon Weekday

DATEPART

DATENAME

Kuupäev/kellaaeg

Funktsioon Year

YEAR

DATEFROMPARTS

Domeeni kokkuvõtt

Funktsioonid DFirst ja DLast

FIRST_VALUE

LAST_VALUE

Matemaatika

Funktsioon Abs

ABS

Matemaatika

Funktsioon Atn

ATAN

ATN2

Matemaatika

Funktsioon Cos

COS

ACOS

Matemaatika

Funktsioon Exp

EXP

Matemaatika

Funktsioonid Int ja Fix

FLOOR

Matemaatika

Funktsioon LOG

LOG

LOG10

Matemaatika

Funktsioon Rnd

RAND

Matemaatika

Funktsioon Round

ROUND

Matemaatika

Funktsioon Sgn

SIGN

Matemaatika

Funktsioon Sin

SIN

Matemaatika

Funktsioon Sqr

SQRT

Programmivoog

Funktsioon Choose

CHOOSE

Programmivoog

Funktsioon IIf

IIF

Statistika

Funktsioon Avg

AVG

SQL Aggregate

Funktsioon Count

COUNT

COUNT_BIG

SQL Aggregate

Funktsioonid Min ja Max

MIN

MAX

SQL-i kokkuvõtt

Funktsioonid StDev ja StDevP

STDEV

STDEVP

SQL-i kokkuvõtt

Funktsioon Sum

SUM

SQL-i kokkuvõtt

Funktsioonid Var ja VarP

VAR

VARP

Tekst

Funktsioon Format

FORMAT

Tekst

Funktsioon LCase

LOWER

Tekst

Funktsioon Left

LEFT

Tekst

Funktsioon Len

LEN

Tekst

Funktsioonid LTrim, RTrim ja Trim

TRIM

LTRIM

RTRIM

Tekst

Funktsioon Replace

REPLACE

Tekst

Funktsioon Right

RIGHT

Tekst

Funktsioon StrReverse

REVERSE

Tekst

Funktsioon UCase

UPPER

Kas vajate veel abi?

Kas soovite rohkem valikuvariante?

Siin saate tutvuda tellimusega kaasnevate eelistega, sirvida koolituskursusi, õppida seadet kaitsma ja teha veel palju muud.

Kogukonnad aitavad teil küsimusi esitada ja neile vastuseid saada, anda tagasisidet ja saada nõu rikkalike teadmistega asjatundjatelt.