Az Access SQL és az SQL Server TSQL összehasonlítása

Hatókör
Microsoft 365-höz készült Access Access 2024 Access 2021 Access 2019 Access 2016

Ha az Access-adatokat SQL Server migrálja, vagy olyan Access-megoldást hoz létre, amely háttéradatbázisként SQL Server, elengedhetetlen, hogy tisztában legyen az Access SQL és a SQL Server Transact SQL (TSQL) közötti különbségekkel. 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ó: Access SQL: alapfogalmak, szókincs és szintaxis és Transact-SQL-referencia.

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, amely nem definiált oszlop>]
vagy
SQL-nézetben használja az SQL-paraméterek 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 Bitvalue = 0
    • Igaz érték tesztelése WHERE Bitvalue <> 0

Null értékek

A null érték nem üres mező, amely azt jelenti, hogy "egyáltalán nincs érték". A null érték egy helyőrző, ami azt jelenti, hogy az adat hiányzik vagy ismeretlen. A null értékeket felismerő adatbázisrendszerek "háromértékű logikát" implementálnak, ami azt jelenti, hogy valami igaz, hamis vagy ismeretlen lehet. Ha nem megfelelően kezeli a null értékeket, helytelen eredményeket kaphat egyenlőségi összehasonlítások vagy WHERE záradékok kiértékelésekor. 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.
  • Az SQL Server a SET ANSI_NULLS OFF lehetőséget használhatja a null értékkel való közvetlen egyenlőségi összehasonlításhoz az = és <> az operátorok használatával. 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. Nem helyettesíti az alapos tesztelést és az eredmények megerősítését.

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".

A SQL Server elsősorban a CAST és a CONVERT TSQL-függvényeket használja, bár léteznek speciális igényeknek megfelelő konverziós függvények is. 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 intervallum, és egy sztringkifejezés, amely idézőjeleket igényel.

  • A SQL Server az első argumentum neve datepart, és olyan kulcsszóértékeket használ, amelyekhez nincs szükség idézőjelekre.

    Ö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, akkor általában létrehozhat egy számított oszlopot (a számított oszlophoz használt TSQL-kifejezést) a kívánt módon. A TSQL függvények széles választékával rendelkezik, és az Ön előnyére szolgál az elérhető funkciók megtekintése. További információ: Mik azok az SQL-adatbázisfüggvények?

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 DAY
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 KONVERTÁLÁS és KONVERTÁLÁS
Dátum és idő Dátum függvény CURRENT_TIMESTAMP
Dátum és idő Nap függvény DÁTUMFROMPARTS
Dátum és idő DateAdd függvény DÁTUMHOZZÁADÁS
Dátum és idő DateDiff függvény DATEDIFF
DATEDIFF_BIG
Dátum és idő DatePart függvény DATEPART
Dátum és idő DateSerial függvény DÁTUMFROMPARTS
Dátum és idő DateValue függvény DÁTUMNÉV
Dátum és idő Hour függvény TIMEFROMPARTS
Dátum és idő Minute függvény TIMEFROMPARTS
Dátum és idő Month függvény MONTH
Dátum és idő Now függvény SYSDATETIME
Dátum és idő Second függvény TIMEFROMPARTS
Időfüggvény TIMEFROMPARTS
Dátum és idő TimeSerial függvény TIMEFROMPARTS
Dátum és idő Weekday függvény DATEPART
DÁTUMNÉV
Dátum és idő Year függvény YEAR
DÁTUMFROMPARTS
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 ARCTAN
ATN2
Matematika Cos függvény COS
ARCCOS
Matematika Exp függvény KITEVŐ
Matematika Int és Fix függvények PADLÓ
Matematika LOG függvény LOG
LOG10
Matematika Rnd függvény VÉL
Matematika Round függvény KEREKÍTÉS
Matematika Sgn függvény ELŐJEL
Matematika Sin függvény SIN
Matematika Sqr függvény GYÖK
Programmenet Choose függvény VÁLASZT
Programmenet IIf függvény IIF
Statisztikai Avg függvény AVG
SQL-összesítés Count függvény DARAB
COUNT_BIG
SQL-összesítés Min és Max függvények MIN
MAX
SQL-összesítés StDev és StDevP függvények SZÓRÁS
SZÓRÁSP
SQL-összesítés Sum függvény SZUM
SQL-összesítés Var és VarP függvények VAR
VARP
Text (Szöveg) Format függvény FORMÁTUM
Text (Szöveg) LCase függvény LOWER
Text (Szöveg) Left függvény BAL
Text (Szöveg) Len függvény HOSSZ
Text (Szöveg) LTrim, RTrim és Trim függvények TRIM
LTRIM
RTRIM
Text (Szöveg) Replace függvény HELYETTESÍT
Text (Szöveg) Right függvény JOBB
Text (Szöveg) StrReverse függvény FORDÍTOTT
Text (Szöveg) UCase függvény UPPER