什麼是分頁?

分頁是將大數據分成離散頁面中的較小數據集的過程。 它廣泛用於網絡應用程序。

分頁在 MS SQL Server 中如何工作?

MS SQL Server,我們可以通過使用來實現分頁功能 OFFSETFETCH 帶有 ORDER BY 的子句 SELECT 陳述。

  • OFFSET:表示要從結果集中跳過的行數。 它應該是 0 或大於 0。
  • FETCH:表示要在結果中顯示的行數。

使用時要考慮的要點 OFFSETFETCH:

  • ORDER BY 是強制使用的 OFFSET FETCH 條款。
  • OFFSET 是強制性的並且 FETCH 是可選的。
  • TOP 子句不能用於 SELECT 聲明與 OFFSET FETCH.

讓我們看一些例子:

在下面的示例中, OFFSET 0FETCH NEXT 5 ROWS kip no rows 並返回數據集中接下來的 5 行,即數據集中的前 5 行。

SELECT EmployeeKey,FirstName,LastName,Title,EmailAddress,
Phone,EmergencyContactName,DepartmentName
FROM dbo.DimEmployee WITH(NOLOCK)
ORDER BY EmployeeKey 
OFFSET 0 ROWS
FETCH NEXT 5 ROWS ONLY

OFFSET 0 和 FETCH NEXT 5 ROWS

在下面的示例中, OFFSET 3FETCH NEXT 5 ROWS 表示跳過前 3 行並返回數據集中接下來的 5 行。

SELECT EmployeeKey,FirstName,LastName,Title,EmailAddress,
Phone,EmergencyContactName,DepartmentName
FROM dbo.DimEmployee WITH(NOLOCK)
ORDER BY EmployeeKey 
OFFSET 3 ROWS
FETCH NEXT 5 ROWS ONLY

OFFSET 3 和 FETCH NEXT 5 ROWSPageNumberRowsOfPage

  • PageNumber — 代表頁碼
  • RowsOfPage — 表示頁面上的行數

現在,計算當我們移動到下一頁時要跳過的行數公式(@PageNumber-1) * @RowsOfPage 被用於 OFFSET,並且行數將返回 FETCH.

這裡, PageNumber 是 2 並且 RowsOfPage 為 5,這意味著返回第 2 頁的數據集。

DECLARE @PageNumber AS INT
       ,@RowsOfPage AS INT

SET @PageNumber=2
SET @RowsOfPage=5

SELECT EmployeeKey,FirstName,LastName,Title,EmailAddress,
Phone,EmergencyContactName,DepartmentName
FROM dbo.DimEmployee WITH(NOLOCK)
ORDER BY EmployeeKey
OFFSET (@PageNumber-1) * @RowsOfPage ROWS
FETCH NEXT @RowsOfPage ROWS ONLY

OFFSET (@PageNumber-1) * @RowsofPage 和 FETCH NEXT @RowsOfPage ROWS

結論

在實時應用程序中,這個完整的邏輯可以寫在存儲過程中,該存儲過程在Web應用程序中單擊“下一步”或頁碼按鈕時調用,以在頁面上顯示記錄集。

所有如何在 MS SQL Server 中使用 OFFSET 和 FETCH 進行分頁 [Simple] 我提到的方法效果很好。 感謝您的閱讀,請在下方評論您對本文的看法並分享 signalfix.net 和你的朋友們。