MS SQL 2008 CTE и CONTAINSTABLE
in

В 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


 

 

0
Your rating: Нет

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступны HTML теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <p> <br><b><i> <img>
  • Строки и параграфы переносятся автоматически.

Подробнее о форматировании

КАПЧА
Этот тест необходим защиты от спама
6 + 5 =
Решите эту простую математическую задачу и введите результат. То есть для 1+3, введите 4.
To prevent automated spam submissions leave this field empty.