OFFSET- und FETCH FIRST-Klauseln

Die Klauseln OFFSET und FETCH FIRST werden verwendet, um einen angegebenen Zeilenbereich ab einem bestimmten Startpunkt in einer Ergebnismenge zurückzugeben. Die Möglichkeit, die aus großen Ergebnismengen abgerufenen Zeilen zu beschränken, ermöglicht Ihnen, durch die Daten „zu blättern“, und verbessert die Effizienz.

Die Klausel OFFSET gibt die Anzahl an Zeilen an, die zu überspringen sind, bevor Daten zurückzugeben sind. Wenn die Klausel OFFSET in einer SELECT-Anweisung nicht verwendet wird, ist die Startzeile 0. Die Klausel FETCH FIRST gibt die Anzahl der Zeilen an, die zurückgegeben werden, entweder als Ganzzahl ohne Vorzeichen größer gleich 1 oder als Prozentsatz, ab dem Startpunkt in der Klausel OFFSET. Wenn sowohl OFFSET als auch FETCH FIRST in einer SELECT-Anweisung verwendet werden, muss die OFFSET-Klausel zuerst stehen.

Die Klauseln OFFSET und FETCH FIRST werden in Unterabfragen nicht unterstützt.

OFFSET-Klauselformat

Das Format von OFFSET ist:

Kopieren
[ OFFSET n {ROWS | ROW} ]

n ist eine Ganzzahl ohne Vorzeichen. Wenn n größer als die Anzahl der in der Ergebnismenge zurückgegebenen Zeilen ist, wird nichts zurückgegeben und keine Fehlermeldung angezeigt.

ROWS ist identisch mit ROW.

FETCH FIRST-Klauselformat

Das FETCH FIRST-Format ist:

Kopieren
[ FETCH FIRST [ n [ PERCENT ] ] { ROWS | ROW } {ONLY | WITH TIES } ]

n gibt die Anzahl an zurückzugebenden Zeilen an. Der Standardwert ist 1, wenn n ausgeschlossen wird.

n ist eine Ganzzahl ohne Vorzeichen größer oder gleich 1, wenn kein PERCENT folgt. Wenn nach n ein PERCENT folgt, kann der Wert entweder ein positiver Teilwert oder eine Ganzzahl ohne Vorzeichen sein.

ROWS ist identisch mit ROW.

WITH TIES muss zusammen mit der ORDER BY-Klausel verwendet werden.

WITH TIES erlaubt die Rückgabe von mehr Zeilen als im FETCH-Wert angegeben, da auch Peer-Zeilen zurückgegeben werden. Das sind Zeilen, die aufgrund der ORDER BY-Klausel nicht eindeutig sind.

Beispiele

Geben Sie Informationen aus der sechsundzwanzigsten Zeile der Ergebnismenge, sortiert nach nachname und dann nach vorname zurück.

Kopieren
SELECT angnr, nachname, vorname FROM ang ORDER BY nachname, vorname OFFSET 25 ROWS

Geben Sie an, dass Sie nur zehn Zeilen zurückgeben möchten.

Kopieren
SELECT angnr, nachname, vorname FROM ang ORDER BY nachname, vorname OFFSET 25 ROWS FETCH FIRST 10 ROWS ONLY

Geben Sie die zehn Zeilen und ihre Peer-Zeilen (Zeilen, die basierend auf der ORDER BY-Klausel nicht eindeutig sind) zurück.

Kopieren
SELECT angnr, nachname, vorname FROM ang ORDER BY nachname, vorname OFFSET 25 ROWS FETCH FIRST 10 ROWS WITH TIES