Access SQL mit SQL Server TSQL vergleichen
Applies ToAccess für Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Wenn Sie Ihre Access-Daten zu SQL Server migrieren oder eine Access-Lösung mit SQL Server als Back-End-Datenbank erstellen, ist es wichtig, dass Sie die Unterschiede zwischen Access SQL und SQL Server Transact SQL (TSQL) kennen. Im Folgenden werden die wichtigsten Unterschiede aufgeführt, die Sie kennen müssen, damit Ihre Lösung wie vorgesehen funktioniert.

Weitere Informationen finden Sie unter Access SQL: grundlegende Konzepte, Vokabular und Syntax und Transact-SQL-Referenz.

Syntax- und Ausdrucksunterschiede

Es gibt ein paar Syntax- und Ausdrucksunterschiede, die eine Konvertierung erfordern. Die folgende Tabelle fasst die häufigsten zusammen.

Unterschied

Access SQL

SQL Server TSQL

Relationales Datenbankattribut

Wird in der Regel als Feld bezeichnet

Wird in der Regel als Spalte bezeichnet

Zeichenfolgenliterale

Anführungszeichen ("), z. B."Mary Q. Contrary"

Apostroph ('), z. B.'Mary Q. Contrary'

Datumsliterale

Nummernzeichen (#), z. B. #1.1.2019#

Apostroph ('), z. B. '1.1.2019'

Mehrfache Platzhalterzeichen

Sternchen (*), z. B. "Cath*"

Prozent (%), z. B. "Cath%"

Einfache Platzhalterzeichen

Fragezeichen (?), z. B. "Cath?"

Unterstrich (_), z. B. "Cath_"

Modulo-Operator

MOD-Operator, z. B. Wert1 MOD Wert2

Prozent (%), z. B. Wert1 % Wert2

Boolesche Werte

WO Bitwert = [Wahr | Falsch]

Oder

WO Bitwert = [-1 | 0]

WO Bitwert = [1 | 0]

Parameter

[<Ein Name, der keine definierte Spalte ist>]

Oder

Verwenden Sie in der SQL-Ansicht die SQL-Parameterdeklaration

@ParamName

Hinweise   

  • Access verwendet Anführungszeichen (") um Tabellennamen und Objekte herum. T-SQL kann sie für Tabellennamen mit Leerzeichen verwenden. Dies ist jedoch keine Standardbenennungsmethode. In den meisten Fällen sollten Objektnamen ohne Leerzeichen umbenannt werden, Abfragen müssen aber auch so umgeschrieben werden, dass Sie neuen Tabellennamen entsprechen. Verwenden Sie Klammern [] für Tabellen, die nicht umbenannt werden können, die jedoch nicht den Benennungsstandards entsprechen. Außerdem klammert Access Parameter in Abfragen zusätzlich ein, sie können jedoch in T-SQL entfernt werden.

  • Erwägen Sie die Verwendung des kanonischen Datumsformats yyyy-mm-dd hh:nn:ss, bei dem es sich um einen ODBC-Standard für Datumsangaben handelt, die als Zeichen gespeichert sind. Er bietet eine konsistente Methode, sie datenbankübergreifend darzustellen, und erhält die Sortierreihenfolge des Datums aufrecht.

  • Um Verwechslungen beim Vergleichen von booleschen Werten zu vermeiden, können Sie den folgenden Vergleich für Access und SQL Server verwenden:

    • Test für falschen Wert    WO Bitwert = 0

    • Test für wahren Wert    WO Bitwert <> 0

Nullwerte

Ein Nullwert ist kein leeres Feld, d. h. "überhaupt kein Wert". Ein Nullwert ist ein Platzhalter, d. h., dass Daten fehlen oder unbekannt sind. Datenbanksysteme, die Nullwerte erkennen, implementieren "dreiwertige Logik". Das bedeutet, dass ein Element wahr, falsch oder unbekannt sein kann. Wenn Sie Nullwerte nicht richtig behandeln, können Sie bei Übereinstimmungsvergleichen oder der Auswertung von WHERE-Klauseln falsche Ergebnisse erhalten. Nachfolgend wird verglichen, wie Access und SQL Server Nullwerte behandeln.

Deaktivieren von Nullwerten in einer Tabelle

In Access und SQL Server sind Nullwerte standardmäßig aktiviert. Zum Deaktivieren von Nullwerten in einer Tabellenspalte gehen Sie folgendermaßen vor:

  • Stellen Sie in Access die Eigenschaft Pflichtfeld auf "Ja" ein.

  • Fügen Sie in SQL Server das NOT NULL-Attribut zu einer Spalte in einer CREATE TABLE-Anweisung hinzu.

Test für Nullwerte in einer WHERE-Klausel

Verwenden der Vergleichsprädikate IS NULL und IS NOT NULL:

  • Verwenden Sie in Access IS NULL oder IS NOT NULL. Beispiel:

    SELECT … WHERE column IS NULL.
  • Verwenden Sie in SQL Server IS NULL oder IS NOT NULL. Beispiel:

    SELECT … WHERE field IS NULL

Konvertieren von Nullwerten mit Funktionen

Verwenden Sie die Nullfunktionen, um ihre Ausdrücke zu schützen und alternative Werte zurückzugeben:

  • Verwenden Sie in Access die NZ (Wert, [WertWennNull])-Funktion, die 0 oder einen anderen Wert zurückgibt. Beispiel:

    SELECT AVG (NZ (Weight, 50) ) FROM Product
  • Verwenden Sie in SQL Server die ISNULL-Funktion (Wert, replacement_value), die 0 oder einen anderen Wert zurückgibt. Beispiel:

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

Grundlegendes zu Datenbankoptionen

Bei einigen Datenbanksystemen gibt es proprietäre Mechanismen:

  • In Access stehen keine Datenbankoptionen zur Verfügung, die sich auf "Null" beziehen.

  • In SQL Server können Sie die Option „SET ANSI_NULLS OFF“ mithilfe der Operatoren „=“ und „<“, „>“ für direkte Übereinstimmungsvergleiche mit „NULL“ verwenden. Wir empfehlen, diese Option zu vermeiden, da sie veraltet ist und Andere verwirren kann, die auf ISO-konforme Null-Behandlung angewiesen sind.

Konvertierung und Umwandlung

Wenn Sie mit Daten arbeiten oder programmieren, ist es ständig erforderlich, Datentypen zu konvertieren. Der Vorgang der Konvertierung kann einfach oder komplex sein. Häufig auftretende Probleme, die Sie berücksichtigen müssen, sind: implizite oder explizite Konvertierung, die Ländereinstellungen für das aktuelle Datum und die Uhrzeit, das Runden oder Abschneiden von Zahlen sowie die Größe des Datentyps. Um eine sorgfältige Prüfung und Bestätigung Ihrer Ergebnisse kommen Sie nicht herum.

In Access verwenden Sie die elf Typkonvertierungsfunktionen – eine für jeden Datentyp, die alle mit dem Buchstaben C beginnen. Wenn Sie beispielsweise eine Gleitkommazahl in eine Zeichenfolge konvertieren möchten:

CStr(437.324) returns the string "437.324".

In SQL Server verwenden Sie hauptsächlich die TSQL-Funktionen UMWANDELN und KONVERTIEREN, obwohl es noch andere Konvertierungsfunktionen für spezielle Anforderungen gibt. Wenn Sie beispielsweise eine Gleitkommazahl in eine Zeichenfolge konvertieren möchten:

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

Die Funktionen "DateAdd", "DateDiff" und "DatePart"

Diese häufig verwendeten Datumsfunktionen sind in Access und TSQL ähnlich (DateAdd, DateDiff und DatePart), aber die Verwendung des ersten Arguments ist unterschiedlich.

  • In Access wird das erste Argument als Intervallbezeichnet. Es ist ein Zeichenfolgenausdruck, der Anführungszeichen erfordert.

  • In SQL Server wird das erste Argument datepart genannt. Es verwendet Schlüsselwortwerte, die keine Anführungszeichen erfordern.

    Komponente

    Access

    SQL Server

    Jahr

    "yyyy"

    year, yy, yyyy

    Quartal

    "q"

    quarter, qq, q

    Monat

    "m"

    month, mm, m

    Tag des Jahres

    "y"

    dayofyear, dy, y

    Tag

    "d"

    day, dd, d

    Woche

    "ww"

    wk, ww

    Wochentag

    "w"

    weekday, dw

    Stunde

    "h"

    hour, hh

    Minute

    "n"

    minute, mi, n

    Sekunde

    "s"

    second, ss, s

    Millisekunde

    millisecond, ms

Vergleich von Funktionen

Access-Abfragen können berechnete Spalten enthalten, die manchmal Access-Funktionen verwenden, um Ergebnisse zu erhalten. Wenn Sie Abfragen zu SQL Server migrieren, müssen Sie die Access-Funktion durch eine entsprechende TSQL-Funktion ersetzen, sofern verfügbar. Wenn keine entsprechende TSQL-Funktion vorhanden ist, können Sie in der Regel eine berechnete Spalte erstellen (für eine berechnete Spalte verwendeter TSQL-Ausdruck), um die gewünschten Aktionen auszuführen. TSQL verfügt über eine breite Palette von nützlichen Funktionen. Sehen Sie sie sich an. Weitere Informationen finden Sie unter Was sind die Funktionen der SQL-Datenbank?.

Die folgende Tabelle zeigt, welche Access-Funktion über eine entsprechende TSQL-Funktion verfügt.

Access-Kategorie

Access-Funktion

TSQL-Funktion

Konvertierung

Chr-Funktion

CHAR

Konvertierung

Day-Funktion

DAY

Konvertierung

FormatNumber-Funktion

FORMAT

Konvertierung

FormatPercent-Funktion

FORMAT

Konvertierung

Str-Funktion

STR

Konvertierung

Typumwandlungsfunktionen

UWANDELN und KONVERTIEREN

Datum/Uhrzeit

Date-Funktion

CURRENT_TIMESTAMP

Datum/Uhrzeit

Day-Funktion

DATEFROMPARTS

Datum/Uhrzeit

DateAdd-Funktion

DATEADD

Datum/Uhrzeit

DateDiff-Funktion

DATEDIFF

DATEDIFF_BIG

Datum/Uhrzeit

DatePart-Funktion

DATEPART

Datum/Uhrzeit

DateSerial-Funktion

DATEFROMPARTS

Datum/Uhrzeit

DateValue-Funktion

DATENAME

Datum/Uhrzeit

Hour-Funktion

TIMEFROMPARTS

Datum/Uhrzeit

Minute-Funktion

TIMEFROMPARTS

Datum/Uhrzeit

Month-Funktion

MONAT

Datum/Uhrzeit

Now-Funktion

SYSDATETIME

Datum/Uhrzeit

Second-Funktion

TIMEFROMPARTS

Time-Funktion

TIMEFROMPARTS

Datum/Uhrzeit

TimeSerial-Funktion

TIMEFROMPARTS

Datum/Uhrzeit

Weekday-Funktion

DATEPART

DATENAME

Datum/Uhrzeit

Jahr-Funktion

YEAR

DATEFROMPARTS

Domänenaggregat

DFirst- und DLast-Funktion

FIRST_VALUE

LAST_VALUE

Mathematisch

Abs-Funktion

ABS

Mathematisch

Atn-Funktion

ATAN

ATN2

Mathematisch

Cos-Funktion

COS

ACOS

Mathematisch

Exp-Funktion

EXP

Mathematisch

Int- und Fix-Funktion

FLOOR

Mathematisch

Log-Funktion

LOG

LOG10

Mathematisch

Rnd-Funktion

RAND

Mathematisch

Round-Funktion

ROUND

Mathematisch

Sgn-Funktion

SIGN

Mathematisch

Sin-Funktion

SIN

Mathematisch

Sqr-Funktion

SQRT

Programmablauf

Choose-Funktion

CHOOSE

Programmablauf

Wenn-Funktion

IIF

Statistisch

Avg-Funktion

AVG

SQL-Aggregat

Count-Funktion

COUNT

COUNT_BIG

SQL-Aggregat

Min- und Max-Funktion

MIN

MAX

SQL-Aggregat

StDev- und StDevP-Funktion

STDEV

STDEVP

SQL-Aggregat

Sum-Funktion

SUM

SQL-Aggregat

Var- und VarP-Funktion

VAR

VARP

Text

Format (Funktion)

FORMAT

Text

LCase-Funktion

LOWER

Text

Left-Funktion

LEFT

Text

Len-Funktion

LEN

Text

LTrim-, RTrim- und Trim-Funktion

TRIM

LTRIM

RTRIM

Text

Replace-Funktion

REPLACE

Text

Right-Funktion

RIGHT

Text

StrReverse-Funktion

REVERSE

Text

UCase-Funktion

UPPER

Benötigen Sie weitere Hilfe?

Möchten Sie weitere Optionen?

Erkunden Sie die Abonnementvorteile, durchsuchen Sie Trainingskurse, erfahren Sie, wie Sie Ihr Gerät schützen und vieles mehr.

In den Communities können Sie Fragen stellen und beantworten, Feedback geben und von Experten mit umfassendem Wissen hören.