Az Access SQL és az SQL Server TSQL összehasonlítása
Applies ToMicrosoft 365-höz készült Access Access 2024 Access 2021 Access 2019 Access 2016

Ha adatokat helyez át Accessből SQL Serverre, vagy Access-megoldást, mint háttéradatbázist hoz létre SQL Serverrel elengedhetetlen, hogy ismerje az Access SQL és az SQL Server Transact SQL (TSQL) közötti különbségeket. A következőkben felsoroljuk a legfontosabb változatokat, melyek ismerete fontos ahhoz, hogy megoldása a tervezett módon működjön.

További információt az Access SQL: alapfogalmak, szókészlet és szintaxis és a Transact-SQL referenciák című cikkben talál.

Szintaktikai és kifejezésbeli különbségek

Van néhány szintaktikai és kifejezésbeli különbség, ami átváltást igényel. Az alábbi táblázat összefoglalja a leggyakoribbakat.

Különbség

Access SQL:

SQL Server TSQL

Relációs adatbázis attribútum

A neve rendszerint mező

A neve rendszerint oszlop

Karakterlánc-konstans

Idézet („“), például „Mary Q. Contrary“

Aposztróf (‚‘), például ‚Mary Q. Contrary‘

Dátumkonstans

Kettős kereszt (#), például #2019/1/1#

Aposztróf (‚‘) például ‚2019/1/1‘

Többszörös helyettesítő karakter

Csillag (*), például a „Cath*“

Százalék (%), például a „Cath%“

Egyszeres helyettesítő karakter

Kérdőjel (?), például a „Cath?“

Aláhúzás (_), például a „Cath_“

Modulo operátor

MOD operátor, például érték1 MOD érték2

Százalék (%), például érték1 % érték2

Logikai érték

WHERE bájtérték = [Igaz | Hamis]

Vagy

WHERE bájtérték = [-1 | 0]

WHERE bájtérték = [1 | 0]

Paraméterek

[<Olyan név, ami nem meghatározott oszlop>]

Vagy

SQL nézetben használja az SQL paraméter deklarációt

@ParamName

Megjegyzések   

  • Az Access idézőjelbe („“) teszi a táblázatok neveit és objektumait. A T-SQL felhasználhatja őket szóközökkel ellátott táblázatokhoz, de ez nem szokásos elnevezési gyakorlat. Az objektumokat a legtöbb esetben szóközök nélkül kell átnevezni, de a lekérdezéseket is át kell írni az új tábla neveinek megfelelően. Használhat szögletes zárójelet [] azoknál a táblázatoknál, amelyek nem nevezhetők át, és nem felelnek meg a névadási szabványoknak. Az Access ezenkívül további zárójeleket is ad a lekérdezésekhez, de a T-SQL-ben eltávolíthatja őket.

  • Fontolja meg a kanonikus dátum formátum, az éééé-hh-nn óó: NN: SS használatát, amely egy ODBC-szabvány a szövegként tárolt dátumokra, ami által egységes módon jelenítheti meg őket az adatbázisokban, és megőrizheti a dátum szerinti rendezési sorrendet.

  • A logikai értékek összehasonlításakor a következő összehasonlítást használhatja az Accesshez és az SQL Serverhez:

    • Hamis érték tesztelése    WHERE bájtérték = 0

    • Igaz érték tesztelése    WHERE bájtérték <> 0

Null értékek

A null érték nem üres mező és nem jelenti, hogy „nincs érték“. A null érték egy helyőrző, ami azt jelenti, hogy az adat hiányzik vagy ismeretlen. Azok az adatbázis-rendszerek, melyek felismerik a null értéket „háromértékes logikát“ használnak, ami szerint valami lehet igaz, hamis vagy ismeretlen. Amennyiben nem kezeli megfelelően a null értékeket, hibás eredményeket kaphat egyenlőségi összehasonlítások, vagy WHERE záradék értékelése során. Az alábbi összehasonlítás bemutatja, hogy kezeli a null értékeket az Access és az SQL Server.

Null értékek letiltása egy táblázatban

Mind az Access, mind az SQL Server alapbeállítása, hogy a null értékek engedélyezve vannak. A null értékek letiltásához egy táblázat oszlopában tegye a következőket:

  • Az Accessben állítsa egy mező Kötelező tulajdonságát Igen értékre.

  • Az SQL Serverben adja a NOT NULL attribútumot az oszlopához a CREATE TABLE utasításban.

Null értékek tesztelése egy WHERE záradékban

Használja az IS NULL és az IS NOT NULL összehasonlítási predikátumokat:

  • Az Accessben használja az IS NULL és az IS NOT NULL predikátumokat. Például:

    SELECT … WHERE column IS NULL.
  • SQL Serverben használja az IS NULL és az IS NOT NULL predikátumokat. Például:

    SELECT … WHERE field IS NULL

Konvertálja a null értékeket függvényekkel

Használja a null függvényeket a saját kifejezések védelméhez és másodlagos értékek visszaadásához:

  • Az Accessben használja az NZ (value, [valueifnull]) függvényt, amely 0 vagy más értéket ad vissza. Például:

    SELECT AVG (NZ (Weight, 50) ) FROM Product
  • SQL Serverben használja az ISNULL(Value, replacement_value) függvényt, amely 0 vagy más értéket ad vissza. Például:

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

Az adatbázis-beállítások megértése

Egyes adatbázis-rendszerek saját mechanizmusokkal rendelkeznek:

  • Az Accessben nincsenek a null értékre vonatkozó adatbázis-beállítások.

  • SQL Serverben használhatja a SET ANSI_NULLS OFF opciót közvetlen egyenlőségi összehasonlításhoz azokkal null értékkel, amelyek a = and <> operátorokat használják. Azt javasoljuk, hogy ne használja ezt a beállítást, mert elavult, és így összezavarhatja azokat, akik az ISO-kompatibilis null-kezelést használják.

Konvertálás és casting

Amikor csak adatokkal vagy kódolással dolgozik, az adatok más formátumba helyezése állandóan szükséges. Az konvertálás folyamata lehet egyszerű és összetett. A következőkkel kapcsolatos problémák gyakoriak: implicit vagy explicit konvertálás, a dátum-és időpontok regionális beállításai, a számok kerekítése vagy csonkítása és adattípus mérete. Az alapos tesztelést és az eredmények megerősítését nem lehet helyettesíteni.

Az Accessben a Típuskonverziós függvényeketkell használnia, amelyből 11 van, egy minden adattípushoz, és amelyek mindegyike C betűvel kezdődik. Például egy lebegőpontos számot karakterláncba konvertálni:

CStr(437.324) returns the string "437.324".

Az SQL Serverben elsősorban a CAST és CONVERT TSQL-függvényeket használja, bár vannak más Konverziós függvények is a speciális igényekhez. Például egy lebegőpontos számot karakterláncba konvertálni:

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

DateAdd, DateDiff és DatePart függvények

Ezek a gyakori függvények hasonlók (DateAdd, DateDiff és DatePart) az Accessben és TSQL-ben, de az első argumentum használata eltérő.

  • Az Accessben az első argumentum neve az intervallum, és az idézőjeleket igénylő karakterlánc-kifejezés.

  • Az SQL Serverben az első argumentum neve datepart, és olyan kulcsszavakat használ, amelyek nem igényelnek idézőjeleket.

    Összetevő

    Access

    SQL Server

    Év

    „éééé“

    év, éé, éééé

    Negyedév

    „n.év“

    negyedév, n.év, n.

    Hónap

    „h“

    hónap, hh, h

    Év napja

    „y“

    évnapja

    Nap

    „n“

    nap, nn, n

    Hét

    „hét“

    wk, ww

    A hét napja

    „w“

    hétköznap, hn

    Óra

    "ó"

    óra, óó

    Perc

    "p"

    perc, pp, p

    Másodperc

    "mp"

    másodperc, mp, s

    Ezredmásodperc

    ezredmásodperc, ms

Függvények összehasonlítása

Az Access-lekérdezések olyan számított oszlopokat is tartalmazhatnak, amelyek időnként Access függvényeket használnak. Adatbázis SQL Serverre történő áthelyezése során le kell cserélnie az Access függvényt egy egyenértékű TSQL-függvényre. Ha nincs megfelelő TSQL-függvény, rendszerint létrehozhat egy számított oszlopot (a számított oszlophoz használt TSQL kifejezést) a kívánt feladathoz. A TSQL számos függvénnyel rendelkezik és saját érdeke, hogy megismerje az elérhető tartalmakat. További információért keresse fel a Az SQL adatbázis-függvények című tartalmat.

Az alábbi táblában láthatja, mely Access függvényhez tartozik megfelelő TSQL-függvény.

Access kategória

Access függvény

TSQL-függvény

Konvertálás

Chr függvény

CHAR

Konvertálás

Nap függvény

NAP

Konvertálás

FormatNumber függvény

FORMÁTUM

Konvertálás

FormatPercent függvény

FORMÁTUM

Konvertálás

Str függvény

STR

Konvertálás

Típuskonverziós függvények

CAST és CONVERT

Dátum/Idő

Dátum függvény

CURRENT_TIMESTAMP

Dátum/Idő

Nap függvény

DATEFROMPARTS

Dátum/Idő

DateAdd függvény

DATEADD

Dátum/Idő

DateDiff függvény

DATEDIFF

DATEDIFF_BIG

Dátum/Idő

DatePart függvény

DATEPART

Dátum/Idő

DateSerial függvény

DATEFROMPARTS

Dátum/Idő

DateValue függvény

DATENAME

Dátum/Idő

Hour függvény

TIMEFROMPARTS

Dátum/Idő

Minute függvény

TIMEFROMPARTS

Dátum/Idő

Month függvény

MONTH

Dátum/Idő

Now függvény

SYSDATETIME

Dátum/Idő

Second függvény

TIMEFROMPARTS

Time függvény

TIMEFROMPARTS

Dátum/Idő

TimeSerial függvény

TIMEFROMPARTS

Dátum/Idő

Weekday függvény

DATEPART

DATENAME

Dátum/Idő

Year függvény

YEAR

DATEFROMPARTS

Tartományösszegzés

DFirst és DLast függvények

FIRST_VALUE

LAST_VALUE

Matematika

Abs függvény

ABS

Matematika

Atn függvény

ATAN

ATN2

Matematika

Cos függvény

COS

ACOS

Matematika

Exp függvény

EXP

Matematika

Int és Fix függvények

FLOOR

Matematika

LOG függvény

LOG

LOG10

Matematika

Rnd függvény

RAND

Matematika

Round függvény

ROUND

Matematika

Sgn függvény

SIGN

Matematika

Sin függvény

SIN

Matematika

Sqr függvény

SQRT

Programmenet

Choose függvény

CHOOSE

Programmenet

IIf függvény

IIF

Statisztikai

Avg függvény

AVG

SQL-összesítés

Count függvény

COUNT

COUNT_BIG

SQL-összesítés

Min és Max függvények

MIN

MAX

SQL-összesítés

StDev és StDevP függvények

STDEV

STDEVP

SQL-összesítés

Sum függvény

SUM

SQL-összesítés

Var és VarP függvények

VAR

VARP

Szöveg

Format függvény

FORMÁTUM

Szöveg

LCase függvény

LOWER

Szöveg

Left függvény

LEFT

Szöveg

Len függvény

LEN

Szöveg

LTrim, RTrim és Trim függvények

TRIM

LTRIM

RTRIM

Szöveg

Replace függvény

REPLACE

Szöveg

Right függvény

RIGHT

Szöveg

StrReverse függvény

REVERSE

Szöveg

UCase függvény

UPPER

További segítségre van szüksége?

További lehetőségeket szeretne?

Fedezze fel az előfizetés előnyeit, böngésszen az oktatóanyagok között, ismerje meg, hogyan teheti biztonságossá eszközét, és így tovább.

A közösségek segítségével kérdéseket tehet fel és válaszolhat meg, visszajelzést adhat, és részletes ismeretekkel rendelkező szakértőktől hallhat.