我不是數據庫人員(因爲這個問題會顯示)。我試圖編寫一個表值函數,我可以在ASP.NET Web應用程序中使用Linq To Sql。SQL Server 2008 - 使用多個關鍵字和分頁進行全文搜索
假設我想搜索標題或摘要可能包含若干關鍵字(例如「澳大利亞歷史」)的圖書。
我想一次顯示x個結果,所以我需要能夠告訴我的函數「跳過」並「取」一定數量的記錄。
有些書可能被標記爲「已刪除」。我不想退回這些。
這是我到目前爲止有:
CREATE FUNCTION SearchBooks
(
@keywords nvarchar(50),
@skip int,
@take int
)
RETURNS TABLE
AS
RETURN
(
SELECT TOP (@take)
ROW_NUMBER() OVER (ORDER BY MyFTS.RANK DESC) AS RowID,
MyFTS.RANK as Relevance,
[ID],
[Title],
[Summary]
FROM [Book]
JOIN CONTAINSTABLE ([Book], ([Title], [Summary]), @keywords, @take) AS MyFTS ON MyFTS.[KEY] = [Book].[ID]
WHERE ([Book].[Deleted] = 0)
AND (MyFTS.[RowID] BETWEEN (@skip + 1) AND (@skip + @take))
ORDER BY MyFTS.RANK DESC
)
當我嘗試創建此功能SSMS給我「無效的列名稱ROWID'」的錯誤。
我想我還需要獲得匹配記錄的總數,以便我可以設置分頁?
我希望你們其中一位SQL大師可以指出我朝着正確的方向。