Ответить на комментарий
MS SQL 2008 CTE и CONTAINSTABLE
В MS SQL для постраничкого вывода можно использовать CTE (Common table expressions):
WITH cte AS
(
SELECT ROW_NUMBER() OVER (ORDER BY FullName ASC) as RowNum,
* FROM Users
) SELECT * FROM cte
WHERE RowNum BETWEEN 0 AND 50
В MS SQL 2008 до SP3 включительно CTE не работает с полнотекстовым поиском
(CONTAINSTABLE)
При запросе
WITH cte AS
(
SELECT * FROM CONTAINSTABLE (Users, FullName, 'иванов') as KeyRankTable
)
SELECT * FROM cte
Сервер Выдает ошибку
Msg 0, Level 11, State 0, Line 0
A severe error occurred on the current command. The results, if any, should be discarded.
Msg 0, Level 20, State 0, Line 0
A severe error occurred on the current command. The results, if any, should be discarded.
MS обещали исправление в MSSQL2008 R2
а пока можно обойтись subquery
SELECT *
FROM
(
SELECT ROW_NUMBER() OVER (ORDER BY Users.FullName ASC) as RowNum, *
FROM Users
WHERE Users.FullName in (SELECT KeyTable.[KEY] FROM CONTAINSTABLE(Users, FullName, 'иванов') as KeyTable)
) as Results
WHERE RowNum BETWEEN 20 AND 40